如何在不先保存文件的情况下对其进行流式传输



我已经把下面的代码放在一起,使用json2csv库创建了一个名为example.csv的CSV。

我宁愿在CSV文件被传递到前端下载之前不必保存和存储它。

如果不先保存,我似乎不知道如何将文件流式传输或管道传输到前端。

如何将json2csv库的输出CSV文件直接发送到前端?

我的一些代码

const input = new Readable({ objectMode: true });
input._read = () => {};
input.push(JSON.stringify(parsed));
input.push(null);
var outputPath = "example.csv";
const output = createWriteStream(outputPath, { encoding: "utf8" });
const json2csv = new Transform(opts, transformOpts);
// Pipe to output path
input.pipe(json2csv).pipe(output);

res.setHeader("Content-Type", "text/csv");
res.download(outputPath);

您可以简单地通过管道将json2csv流传输到res对象,例如:

const ReadableStream = require('stream').Readable;
const Json2csvTransform = require('json2csv').Transform;
app.get('/csv', (req, res) => {
const stream = new ReadableStream();
stream.push(JSON.stringify(data));
stream.push(null);
const json2csv = new Json2csvTransform({}, transformOpts);
res.setHeader('Content-disposition', 'attachment; filename=data.csv');
res.writeHead(200, { 'Content-Type': 'text/csv' });
stream.pipe(json2csv).pipe(res);
})

相关内容

最新更新