//file 是传入的整个文件流
spliceChunk(file) {
var filesData = []
var start = 0;
var end;
var filesize = file.size;
//计算文件切片总数 ceil向上取整
var totalPieces = Math.ceil(filesize / 2 * 1024 * 1024);
while (start < filesize) {
end = start + 2 * 1024 * 1024;
if (end > filesize) {
end = filesize;
}
var chunkFile = file.slice(start, end); //切割文件
files = new window.File([chunkFile], file.name, {
type: file.type
})
filesData.push(files)
start = end;
}
//这里调用文件流转base64方法
this.readFileAsBase64(filesData).then(res=>{
console.log("result", res)
})
},
切片文件流转base64
// 分片转成base64
readFileAsBase64(fileData) {
let base64Arr = []
return new Promise((resolve,reject)=>{
for (let i = 0; i < fileData.length; i++) {
(function(file) {
var reader = new FileReader();
reader.onload = (file) => {
//在这里判断是否为第一片 如果不是第一片将data:video/mp4;base64前缀换掉
if (i) {
let str = reader.result.replace("data:video/mp4;base64,", "");
base64Arr.push({base64:str,id:i})
} else{
base64Arr.push({base64:reader.result,id:i})
}
resolve(base64Arr)
}
reader.readAsDataURL(file)
})(fileData[i]);
}
})
},
啊 我感觉写的可能有点复杂 ,但结果是对的!
后续还需要进行MD5加密上传,后边再写吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)