【问题标题】:Node js download csv file and notify response in browserNode js下载csv文件并在浏览器中通知响应
【发布时间】:2018-02-18 06:23:12
【问题描述】:

您好,目前我正在开发MEAN-Stack 应用程序Node 和Angular1

我的任务是将JSON 导出到csv 并下载。

我正在使用Json2csv 插件。

这是我应用的代码,

exports.exportCsv = function(req, res, next) {
  var users = req.body.users;
  if (users.length > 0) {
    var fields = ['_id', 'firstName', 'email'];
    try {
      var result = json2csv({ data: users, fields: fields });
      var path = Date.now() + '.csv';
      fs.writeFile(path, result, function(err, resu) {
        if (err) {
          return ext.returnError(res, err, 500);
        } else {
          res.download(path);
        }
      });
    } catch (err) {
      console.error(err);
    }
  } else {
    console.error('error');
  }
};

此代码工作正常,文件正在下载,但是,

我在浏览器中看不到它正在下载。 如何将响应发送到浏览器,以便它像所有其他文件一样被下载。

用户如何注意到文件已下载。该文件正在下载,但未在下载中显示。

【问题讨论】:

  • 一提出问题就投反对票?至少请先阅读问题。

标签: angularjs json node.js csv


【解决方案1】:

试试这个

res.download(path);
res.status(201).send('downloaded');

然后查看前端API调用中的错误码或响应信息。

【讨论】:

  • 感谢您的回复。实际上,我能够从我的代码中下载该文件。没有错误发生。但是文件会自动下载,而不通知浏览器。有没有办法在浏览器中显示下载过程。
【解决方案2】:

试试这个,我不确定你得到了什么作为 res 但可以肯定的是,看看它。

 else {
      res.download(path);
      res.msg = "ok ...";
      alert(res);//object res
      //wich attributes property got res (show us)
      for(var i in res){
         console.log(i);//attr
         console.log(res[i]);//value
      }
      alert(res.msg);//res from us inside js
    }

【讨论】:

  • 这里的res 是express js 响应对象。
  • 所以您知道在哪里可以找到此对象并在上传后添加一条消息以发送到您的快递作为对象 res 中的响应,请查看此包的文档或自述文件。
  • 实际上,我可以从我的代码中下载该文件。返回 csv 数据。但是文件会自动下载而不通知浏览器。有没有办法在浏览器中显示下载过程。
猜你喜欢
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多