点击button后使用angularjs,nodejs,expressjs下载Csv文件
我想在前端下载.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调用build议您的代码将处理来自服务器的响应。 因此,浏览器将忽略Content-Disposition
标头,并且不会在浏览器上触发下载。
从我可以告诉你有几个select:
- 如果你没有在客户端做任何预处理,为什么不直接使用
/entity/consultations/_/registerationReport
(使用和<a>
标签)的链接, - 你也可以从你的Angular代码中写入
$window.open(...)
(这会产生一个闪烁的popup选项卡或窗口的难看的副作用)
可能还有其他一些解决scheme,但这些是唯一立即想到的。 最重要的是,XHR不是你要完成任务的正确工具。