Tru*_*ran 8 csv download node.js
我正在使用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');
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
谢谢!
Kie*_*lus 18
如果您使用快递,请使用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);
});
});
Run Code Online (Sandbox Code Playgroud)
Ale*_*der 12
在快递服务器上:
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);
Run Code Online (Sandbox Code Playgroud)
在客户端(否则大多数浏览器不会下载文件,即使您会在网络面板中看到正确的响应):
window.open(downloadUrl);
Run Code Online (Sandbox Code Playgroud)