Node.js Express – 如何结合文件创build和sendFile

我知道我们可以像这样在nodeJs中创build一个新的文件:

let writeStream = fs.createWriteStream(name); writeStream.write("f1,f2,f3"); writeStream.write("1,2,3"); writeStream.end(); 

如果我们有一个文件的绝对path – 我们可以发送它作为一个回应:

 res.sendFile(name); 

但是,我们如何结合这一点,就像我得到一个创build报告的发布请求一样,我做了一些查询,把结果放到一个csv文件中,然后发回相同的新创build的文件?

更新:我看到sendFile工作正常 – 但响应正在作为文本 – 我的问题更多是 – 如何从ajax请求触发csv下载 – 而不是表单提交。 是否有可能 – 因为这似乎是一个巨大的安全风险

假设myData包含你的最终数据;

 // This will force download at browser side res.writeHead(200, {'Content-Type': 'application/force-download','Content-disposition':`attachme‌​nt; 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'); });