点击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:

  1. 如果你没有在客户端做任何预处理,为什么不直接使用/entity/consultations/_/registerationReport (使用和<a>标签)的链接,
  2. 你也可以从你的Angular代码中写入$window.open(...) (这会产生一个闪烁的popup选项卡或窗口的难看的副作用)

可能还有其他一些解决scheme,但这些是唯一立即想到的。 最重要的是,XHR不是你要完成任务的正确工具。