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

标签 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 文件。

最佳答案

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

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

  1. 如果您不需要在客户端上进行任何预处理,为什么不直接使用指向/entity/consultations/_/registerationReport 的链接呢? (使用 <a> 标签),
  2. 你也可以写$window.open(...)来自您的 Angular 代码(这将产生闪烁的弹出选项卡或窗口的丑陋副作用)

可能还有许多其他解决方案,但这些是唯一立即浮现在脑海中的解决方案。底线是 XHR 不是您要完成的任务的正确工具。

关于javascript - 使用 angularjs , nodejs , expressjs 单击按钮后在前端下载 Csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861062/

相关文章:

javascript - 如何使用 JavaScript 在 mongodb 中设置唯一 id

javascript - 如何使用使用自己的 XMLHttpRequest 而不是 $http 的库来测试服务

javascript - Ng-Repeat 显示一次性绑定(bind)的不规则行为

javascript - [CORS] :' Access-Control-Allow-Origin' 不允许获取跨域 JSON?

javascript - 为什么 anchor 在此脚本中不起作用?

javascript - 替换电子邮件模板中的占位符

node.js - 如何在 package.json (nodeJs)中创建跨平台脚本(单行的多个命令)

javascript - 如何在不滚动的情况下将 PDF 嵌入实际大小的网站?

node.js - npm install 命令 - 请解释一下

javascript - TypeScript d.ts 和 .js 一致性