我想在前端下载 .csv 文件。
这是我的代码:
$http.get('/entity/consultations/_/registerationReport' )
.success(function (data) {
myWindow = window.open('../entity/consultations/_/registerationReport', '_parent');
myWindow.close();
});
我使用 json2csv
转换器写入 csv 文件。
json2csv({data: report, fields: fields}, function (err, csv) {
if (err) throw err;
res.setHeader('Content-Type', 'application/csv');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.csv");
res.end(csv, 'binary');
});
但它在浏览器上打印 csv 文件的数据而不是下载 csv 文件。
最佳答案
@Pawan,你的json2csv
没问题功能。问题在于您正尝试使用 Angular 的 $http
通过 XMLHttpRequest (XHR) 请求触发下载。服务。 XHR 调用表明您的代码将处理来自服务器的响应。因此 Content-Disposition
header 会被浏览器忽略,并且不会触发浏览器上的下载。
据我所知,您有几种选择:
- 如果您不需要在客户端上进行任何预处理,为什么不直接使用指向
/entity/consultations/_/registerationReport
的链接呢? (使用<a>
标签), - 你也可以写
$window.open(...)
来自您的 Angular 代码(这将产生闪烁的弹出选项卡或窗口的丑陋副作用)
可能还有许多其他解决方案,但这些是唯一立即浮现在脑海中的解决方案。底线是 XHR 不是您要完成的任务的正确工具。
关于javascript - 使用 angularjs , nodejs , expressjs 单击按钮后在前端下载 Csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861062/