我正在使用 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/