前台上传使用vue+axios
前台代码:
// 计算分片总数
for (let i = 0; i < Math.ceil(this.file.size / this.uploadFragment.fragment); i++) {
this.uploadFragment.fragmentSum.push(i);
}
const upload = function(arr, that) {
const frag = arr.shift();
let start = frag * that.uploadFragment.fragment;
// 当前分片结束下标
let end = Math.min(that.file.size, start + that.uploadFragment.fragment);
// 文件内容
let param = new FormData(); // 创建form对象
param.append('file', that.file.slice(start, end), that.file.name);
const reqData = {
param,
fragmentIndex: frag+1,
// 还可以加上别的数据上传,用请求header带上
};
that.teacherUploadVideo(reqData).then(result => {
that.uploadFragment.fragmentList.push(result);
// 通知父组件已经开始上传,打开进度条,并带上进度参数
that.$emit('onUploading', Math.round(end / that.file.size * 100));
// 最后一次请求就发送合并请求
if (arr.length <=