2013-11-24 55 views
6

我使用nodejs和expressjs框架从服务器下载文件'jsonFile.json'。res.download()在我的情况下不工作

我用下面的代码

res.get('/download', function(req, res) { 
     res.setHeader('Content-disposition', 'attachment; filename=jsonFile.json'); 
      res.setHeader('Content-Type', 'text/json'); 
      res.download(__dirname + 'jsonFile.json'); 
     } 
     }); 

但是这会导致与文件的全部内容的响应。

我期待浏览器问我要保存文件在本地磁盘。

如何将文件保存在本地磁盘中?

回答

16

让Express中设置正确的标题,只是这样做:

res.get('/download', function(req, res) { 
    res.download(__dirname + 'jsonFile.json', 'jsonFile.json'); 
}); 

doc

编辑:因为你的要求/download通过AJAX调用,你必须改变你的设置因为在这种情况下,大多数(所有?)浏览器都不会显示下载对话框。

相反,您可以从您的前端代码创建一个新窗口来触发对话框:

window.open('/download?foo=bar&xxx=yyy'); 
+0

相同的状态.. :( – codeofnode

+0

也如果我删除路径名称中的'/'..我得到404 – codeofnode

+0

是的我已经删除头和结果是相同的,但我仍然没有得到预期的结果。请求将文件保存在磁盘上, – codeofnode

0

只是为了确认哪些@robert说,

因为这个东西把我的头两天的 而不是使用Ajax调用,打开一个新的窗口,您的Ajax请求的位置,例如:

window.open("http://yourserver.com/api/link?a=3&b=4") 

希望这可以帮助别人。

相关问题