【问题标题】:Unable to download a csv file in node js using express js无法使用 express js 在节点 js 中下载 csv 文件
【发布时间】:2018-04-04 11:52:37
【问题描述】:

我正在使用Json2csv 将 JSON 转换为 CSV,并且我成功地将 JSON 转换为 CSV 文件,但现在我想为该数据创建一个名为 output.csv 的文件,并且我希望在单击该 API 后立即output.csv 文件自动下载。

这是我尝试过的

const JsonToCsv = (fields,res,data) => {


  const opts = { fields };
  try {
    const parser = new Json2csvParser(opts);
    const csv = parser.parse(data);
    res.set('Content-Type', 'text/csv');
    // const csv = parser.parse(myData);
    fs.writeFile('./output.csv', csv, (err) => {
      if (err) {
        console.log(err);
      }
      else {
        console.log('wrote output.csv');
        res.setHeader('Content-disposition', 'attachment; filename=output.csv');
        res.download('./output.csv');
        res.send(csv);
      }
    });
  } catch (err) {
    console.error(err);
  }
}

现在 csv 文件已制作,但没有下载。

【问题讨论】:

  • 是否记录任何错误?
  • @vibhor1997a 我已经更新了我的问题,错误是否存在,请看一下
  • console.log(csv) 是否记录 csv?
  • @vibhor1997a 是的,它记录了 csv

标签: node.js csv express download


【解决方案1】:

您需要使用 fs.readFile 而不是流,因为我看到您正在使用来自 json2csv 模块的同步 API。

您可以通过以下方式强制下载csv文件。

const csv = parser.parse(myData);
  fs.writeFile('./output.csv',csv, (err) => {
      if (err) {
          console.log(err);
      }
      else {
          console.log('wrote output.csv');
          res.download('./output.csv');
      }
  });

【讨论】:

  • 感谢@vibhor1997a 现在文件已制作,但尚未开始下载
  • 它应该可以下载,请使用您为路线尝试的最新代码更新您的帖子。
  • 您现在遇到了什么错误?尝试删除res.send(csv)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 2019-05-18
  • 1970-01-01
  • 2017-01-12
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多