无法使用express js在节点js中下载csv文件

时间:2018-04-04 11:52:38

标签: node.js csv express download

我正在使用Json2csv将JSON转换为CSV并且我已成功转换CSV文件中的JSON但现在我想创建一个名为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文件,但没有下载。

1 个答案:

答案 0 :(得分:0)

您需要使用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');
      }
  });