问答

nodejs stream合并分片遇到的问题

作者:admin 2021-07-26 我要评论

当客户端对压缩包进行分片传到服务端时,使用stream流合并文件分片,没有任何报错,但最后打开压缩包发现缺失了部分资源,压缩包的大小却和上传前一样...有大佬...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

当客户端对压缩包进行分片传到服务端时,使用stream流合并文件分片,没有任何报错,但最后打开压缩包发现缺失了部分资源,压缩包的大小却和上传前一样...有大佬踩过这个坑吗!!

问题展示

image.png
image.png

相关代码(网上)
let chunkPaths = chunks.map(function (name) {
            return path.join(process.env.IMAGESDIR, name)
        });
        
// 采用Stream方式合并
        let targetStream = fs.createWriteStream(path.join(process.env.IMAGESDIR, fileName));
        const readStream = function (chunkArray, cb) {
            let path = chunkArray.shift();
            let originStream = fs.createReadStream(path);
            originStream.pipe(targetStream, {end: false});
            originStream.on("end", function () {
                // 删除文件
                fs.unlinkSync(path);
                if (chunkArray.length > 0) {
                    readStream(chunkArray, callback)
                } else {
                    cb && cb()
                }
            });
        };

        readStream(chunkPaths, callback);
###

试下用现成的文件拼接工具检验一下客户端上传的分片内容和顺序是否正确。如 linux 的 cat 命令:

cat chunk1 chunk2 > output.rar

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 古纳于vue按下拖动元素

    古纳于vue按下拖动元素

  • Angular 项目编译并部署生产模式

    Angular 项目编译并部署生产模式

  • element-ui   表达验证时的问题

    element-ui 表达验证时的问题

  • iOS 中的静态库的作用是什么?

    iOS 中的静态库的作用是什么?

腾讯云代理商
海外云服务器