Node.js Express - 如何将文件创建和发送文件结合起来



我知道我们可以在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':`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');
});

相关内容

最新更新