2

example.csv我已经使用该json2csv库将以下代码组合在一起,该代码创建了一个名为 的 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);
4

1 回答 1

1

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

const ReadableStream = require('stream').Readable;

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);
})
于 2021-05-18T14:08:27.590 回答