下载csv文件node.js

时间:2016-02-01 19:34:07

标签: node.js csv download

我正在使用node.js构建应用程序并尝试将数据下载为csv文件。我正在使用json2csv(https://www.npmjs.com/package/json2csv)来实现此目的。但是,我配置它的方式,.csv文件存储在我的应用程序的根目录中。我希望将文件作为下载文件发送给用户 - 例如,该文件应出现在用户的/downloads文件夹中。这是我目前的代码:

var fields = ['car', 'price', 'color'];
var myCars = [
  {
    "car": "Audi",
    "price": 1,
    "color": "blue"
  }, {
    "car": "BMW",
    "price": 1,
    "color": "black"
  }, {
    "car": "Porsche",
    "price": 1,
    "color": "green"
  }
];

json2csv({ data: myCars, fields: fields }, function(err, csv) {
  if (err) console.log(err);
  fs.writeFile('file.csv', csv, function(err) { //currently saves file to app's root directory
    if (err) throw err;
    console.log('file saved');
  });

});

var file = '../software-project-metric-dashboard/file.csv';
res.download(file, 'testfile.csv'); 

有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:13)

如果您使用express,请使用res.send。

您必须定义类似于此的HTTP GET路由:

app.get("/pathToYourDownload", function (req, res) {
  json2csv({ data: myCars, fields: fields }, function(err, csv) {
    res.setHeader('Content-disposition', 'attachment; filename=data.csv');
    res.set('Content-Type', 'text/csv');
    res.status(200).send(csv);
  });
});

答案 1 :(得分:0)

express服务器上:

const json2csv = require('json2csv').parse;

const csvString = json2csv(yourDataAsArrayOfObjects);
res.setHeader('Content-disposition', 'attachment; filename=shifts-report.csv');
res.set('Content-Type', 'text/csv');
res.status(200).send(csvString);

在客户端上(否则大多数浏览器将不会下载文件,即使您会在网络面板中看到正确的响应):

window.open(downloadUrl);