res.download()在我的情况下不起作用
res.download() not working in my case
我正在使用nodejs和expressjs框架从服务器下载一个文件"jsonFile.json"。
我正在使用以下代码
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');
}
});
但这会导致一个包含文件全部内容的响应。
我希望浏览器会要求我将文件保存在本地磁盘中。
如何将文件保存在本地磁盘中。???
让Express设置正确的标头并执行以下操作:
res.get('/download', function(req, res) {
res.download(__dirname + 'jsonFile.json', 'jsonFile.json');
});
(doc)
编辑:由于您通过AJAX调用请求/download
,您必须更改设置,因为在这种情况下,大多数(所有?)浏览器都不会显示下载对话框。
相反,您可以从前端代码创建一个新窗口来触发对话框:
window.open('/download?foo=bar&xxx=yyy');
只是为了确认@robert说了什么,
因为这件事让我头脑发热了两天,不要使用ajax调用,而是打开一个包含ajax请求位置的新窗口,例如:
window.open("http://yourserver.com/api/link?a=3&b=4")
希望这能帮助到别人。
相关文章:
- 在我的情况下,如何进行http请求
- 如何在我的情况下禁用表单提交
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 连接变量,在我的情况下背景样式损坏
- 如何在我的情况下设置日期格式
- 如何在我的情况下创建加载脚本
- angular如何在我的情况下设置服务
- 如何在我的情况下设置类名
- 在我的情况下,如何打开新的弹出窗口
- 函数在我的情况下无法执行
- 在我的情况下,如何选择某些孩子
- 如何在我的情况下切换链接
- res.download()在我的情况下不起作用
- 点击事件不'在我的情况下不会触发
- 在我的情况下,如何将对象添加到另一个对象中
- 在我的情况下,如何解决我的单元测试问题
- 不确定在我的情况下使用 ng-options 的最佳方法
- 在我的情况下,如何从 ajax 获取返回的数据
- 在我的情况下,如何将参数传递到函数中
- 在我的情况下,如何在角度中对对象列表进行排序