node.js - 无法使用express js在node js中下载csv文件

标签 node.js csv express download

我正在使用 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 文件已创建,但尚未下载。

最佳答案

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

关于node.js - 无法使用express js在node js中下载csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49650316/

相关文章:

python - csvreader.fieldnames 不被识别为 python 中的 csv 阅读器对象的属性

arrays - MongoDB (Mongoose) 更新数组中的元素

javascript - Nodeweb 套件崩溃 - Events.js :85 Error

node.js - EJS:<%= 与 <%-

javascript - 如何显示将express.js开发服务器暴露给网络中其他机器的IP地址?

java - Java中从url读取CSV文件

php - 上传带有自定义 ID 的 CSV

node.js - ostrio :files package is working, 但无法访问图像

node.js - 聚合查找中面临的问题。需要查找结果与定义的结构相同

javascript - Node : TypeError: Buffer is not a function (but it's a function! )