我想在前端下载.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文件。
答案 0 :(得分:1)
@Pawan,您的json2csv
功能没有任何问题。问题在于您尝试使用Angular的$http
服务尝试使用XMLHttpRequest(XHR)请求触发下载。 XHR调用表明您的代码将处理来自服务器的响应。因此,浏览器会忽略Content-Disposition
标题,并且不会在浏览器上触发下载。
据我所知,你有几种选择:
/entity/consultations/_/registerationReport
的链接(使用和<a>
标记),$window.open(...)
(这会产生闪烁的弹出式标签或窗口的丑陋副作用)可能有许多其他解决方案,但这些是唯一可以立即想到的解决方案。最重要的是,XHR不是您正在尝试完成的任务的正确工具。