我正在使用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');
有人可以帮忙吗?
谢谢!
答案 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);