如何组合的视频上传块的Node.js
我试图用busboy分块上传一个大的(8.3GB)视频到我的Node.js(快递)服务器。如何我收到的每个数据块(打杂是这样做的部分),并拼凑它作为一个整体的视频?
我一直在寻找到读取和写入流,但我没有得到过整个视频。我一直覆盖它的部分,导致约1 GB。
这里是我的代码:
req.busboy.on('file', (fieldname, file, filename) => {
logger.info(`Upload of '${filename}' started`);
const video = fs.createReadStream(path.join(`${process.cwd()}/uploads`, filename));
const fstream = fs.createWriteStream(path.join(`${process.cwd()}/uploads`, filename));
if (video) {
video.pipe(fstream);
}
file.pipe(fstream);
fstream.on('close', () => {
logger.info(`Upload of '${filename}' finished`);
res.status(200).send(`Upload of '${filename}' finished`);
});
});
回答如下:
使用流
multer让您轻松处理文件上传,明确路线的一部分。这对于不留下显著内存占用小文件的伟大工程。
与加载一个大文件到内存的问题是,你实际上可以运行内存不足而导致应用程序崩溃。
使用的multipart / form-data的请求。这可以通过而不是你的请求选项分配readStream到现场进行处理
流是用于优化性能的极其宝贵的。