我知道我们可以在nodeJs中创建一个新文件,如下所示:
let writeStream = fs.createWriteStream(name);
writeStream.write("f1,f2,f3");
writeStream.write("1,2,3");
writeStream.end();
如果我们有一个文件的绝对路径 - 我们可以将其作为响应发送回:
res.sendFile(name);
但是我们如何结合这一点,比如如果我收到一个创建报告的 post 请求,我做一些查询,将结果放入 csv 文件中,然后发回相同的新创建文件?
更新:我看到 sendFile 运行良好 - 但响应以文本形式进行 - 我更多的问题是 - 如何从 ajax 请求触发 csv 下载 - 而不是表单提交。是否有可能 - 因为它似乎是一个巨大的安全风险
假设myData
包含您的最终数据;
// This will force download at browser side
res.writeHead(200, {'Content-Type': 'application/force-download','Content-disposition':`attachment; filename=myData.csv`});
res.end(myData);
// you can save your data to file in background
fs.writeFile('sample.csv', myData, function(err) {
if (err) throw err;
console.log('file saved');
});