我可以从 fs.createWriteStream() 获取缓冲区吗?

Posted

技术标签:

【中文标题】我可以从 fs.createWriteStream() 获取缓冲区吗?【英文标题】:Can I get the Buffer from fs.createWriteStream()? 【发布时间】:2020-02-08 16:45:59 【问题描述】:

我有一个简单的问题 -

在我的例子中,我使用 archiver NPM 模块,它可以从 Buffer 创建档案。当此模块结束使用方法 archive.finalize() 时,我可能会从 archive.pipe(stream) 获得结果。我想要来自 fs.createWriteStream()Buffer,我可以将其发送到 res.send() Express 方法。

let archive = archiver("zip", 
      zlib:  level: 9  // Sets the compression level.
    );
const stream = fs.createWriteStream(
      "./src/backend/api/test.zip"
    );
archive.pipe(stream);
archive.append(buffer,  name: "test.csv" );
archive.finalize();

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,那可能会对您有所帮助

        const stream = fs.createWriteStream(
                "./src/backend/api/test.zip"
            );

        stream.on('data', (chunk) => 
            //here u get every chunk as a buffer  
        )
        stream.on('finish', () => 
            //here your code if the stream is ending
        )

【讨论】:

以上是关于我可以从 fs.createWriteStream() 获取缓冲区吗?的主要内容,如果未能解决你的问题,请参考以下文章

fs.createWriteStream 停顿

Node.js:检测到一个文件,用 fs.createWriteStream() 打开,被删除

fs.createWriteStream 不会立即创建文件?

使用 Fetch API 和 fs.createWriteStream 对文件进行流式响应

node.js fs.createWriteStream 创建文件,但无法正确写入

node.js 中与 fs.createWriteStream 关​​联的事件