我建立了一个小型节点 js BE 应用程序,在其上构建了 express 和 fastCsv 模块。期望的结果是能够将 csv 文件下载到客户端,而无需将其存储在服务器内的任何位置,因为数据是根据用户标准生成的。到目前为止,我已经能够找到它,我使用流,因为该 csv 文件可能非常大,具体取决于用户选择。我很确定下面的代码中缺少一些东西:
const fs = require('fs');
const fastCsv = require('fast-csv');
.....
(inside api request)
.....
router.get('/', async(req, res) => {
const gatheredData ...
const filename = 'sometest.csv'
res.writeHead(200, {
'Content-Type': 'text/csv',
'Content-Disposition': 'attachment; filename=' + filename
})
const csvDataStream = fastCsv.write(data, {headers: true}).pipe(res)
})
上面的代码以某种方式“起作用”,因为它确实返回了响应,但不是实际文件,而是 csv 文件的内容,我可以在预览选项卡中查看它作为响应。总而言之,我试图将该数据流式传输到 csv 中并将其推送以将文件下载到客户端,而不是将其存储在服务器上。非常感谢任何提示或指示。