Vod上传大文件出现 BASE64出错,小文件没有问题(2)

来源:10-6 视频授权播放功能开发

唐荣涛

2023-10-22

1.进过后端file模块的Debug后,进一步发现一下问题
上传小文件时,shard字段是有值传入的,说明前端的bie-flie.vue(vod.vue是依赖于此组件)组件中
base64是转化了的
图片描述
图片描述

但是上传大文件时,shard字段就是空值,才导致报错

图片描述
图片描述

分片的代码如下:

 /**
             * 将分片数据转成base64进行上传
             */
            upload (param) {
                let _this = this;
                let shardIndex = param.shardIndex;
                let shardTotal = param.shardTotal;
                let shardSize = param.shardSize;
                let fileShard = _this.getFileShard(shardIndex, shardSize);
                // 将图片转为base64进行传输
                let fileReader = new FileReader();

                Progress.show(parseInt((shardIndex - 1) * 100 / shardTotal));
                fileReader.onload = function (e) {
                    let base64 = e.target.result;
                    // console.log("base64:", base64);

                    param.shard = base64;

                    axios.post(process.env.VUE_APP_SERVER + '/file/admin/'+ _this.url , param).then((response) => {
                        let resp = response.data;
                        console.log("上传文件成功:", resp);
                        Progress.show(parseInt(shardIndex * 100 / shardTotal));
                        if (shardIndex < shardTotal) {
                            // 上传下一个分片
                            param.shardIndex = param.shardIndex + 1;
                            _this.upload(param);
                        } else {
                            Progress.hide();
                            _this.afterUpload(resp);
                            $("#" + _this.inputId + "-input").val("");
                        }
                    });
                };
                fileReader.readAsDataURL(fileShard);
            },
写回答

1回答

甲蛙

2023-10-26

这样看不出来问题,有问题就把相关的参数打印出来,看是不是对的。你可以把前端的shardSize shardIndex shardTotal打印出来,看和自己预想的是不是一致

0
0

Spring Cloud+ Vue前后端分离开发企业级在线视频系统

全网稀缺课程 市场热门项目+主流框架 一课掌握前后端技术

1743 学习 · 1697 问题

查看课程