使用angularjs,nodejs,expressjs单击按钮后,在前端下载Csv文件

时间:2014-09-16 05:10:55

标签: javascript node.js angularjs mongodb express

我想在前端下载.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文件。

1 个答案:

答案 0 :(得分:1)

@Pawan,您的json2csv功能没有任何问题。问题在于您尝试使用Angular的$http服务尝试使用XMLHttpRequest(XHR)请求触发下载。 XHR调用表明您的代码将处理来自服务器的响应。因此,浏览器会忽略Content-Disposition标题,并且不会在浏览器上触发下载。

据我所知,你有几种选择:

  1. 如果您没有在客户端进行任何预处理,为什么不直接使用/entity/consultations/_/registerationReport的链接(使用和<a>标记),
  2. 您也可以从Angular代码中编写$window.open(...)(这会产生闪烁的弹出式标签或窗口的丑陋副作用)
  3. 可能有许多其他解决方案,但这些是唯一可以立即想到的解决方案。最重要的是,XHR不是您正在尝试完成的任务的正确工具。