我怎样才能让它更快?我正在使用节点和 fs 库。这是发送 jpg 图像的 fs.Readable 流的 POST 请求的端点。代码开始停留在 800 kB 左右。最终,我希望能够保存视频。理想情况下,我希望它花费的时间少于十秒。 var bufs = []; readStream.on('data', function(d){ bufs.push(d); }); readStream.on('end', function(){ var buf = Buffer.concat(bufs); console.log(buf); fs.writeFile("test.jpg", buf, ()=>{console.log('hi')}); });
1 回答
万千封印
TA贡献1891条经验 获得超3个赞
一种更简单的方法,也使用更少的内存并并行化写入(在块到达时写入块)并且应该更快一点,那就是将流直接通过管道传输到输出文件。
readStream.pipe(fs.createWriteStream("test.jpg"));
readStream.on('close', () => {
console.log("all done now");
});
或者,通过更好的错误处理,可以捕获两个流上的错误并告诉您一切何时完成:
const { pipeline } = require('stream');
pipeline(readStream, fs.createWriteStream("test.jpg"), err => {
if (err) {
console.log(err);
} else {
console.log("all done");
}
});
或者,使用 Promise 和pipeline():
const pipeline = util.promisify(require('stream').pipeline);
pipeline(readStream, fs.createWriteStream("test.jpg")).then(() => {
console.log("all done");
}).catch(err => {
console.log(err);
});
添加回答
举报
0/150
提交
取消