图片上传或小文件上传用不到分片与切割,通常使用post方式用formData的方式直接传给后台,然后后端再直接发送给文件服务器,但如果文件很大或者超大,则可能会导致浏览器崩溃,因为浏览器端上传文件是使用内寸
uploadFile(file){
/* 1. 文件切片
*/
// file:文件对象
// chunkSize: 规定的总大小
// chunkNum:要分的块数
const chunkSize = 10 * 1024 * 1024; // 10MB一片,可以根据需求自定义
let chunkNum;
if (file.size <= chunkSize) {
chunkNum = 1;
} else {
chunkNum = Math.ceil(file.size / chunkSize); //这里使用进一法取天花板函数,防止最后一块不够分
}
console.log(`chunkNum`, chunkNum);//到这里切片结束了 chunknum就是要切的份数
/* 2. 文件切割
// start:开始数
// end : 结束数
*/
let start = 0,
end = 0,
chunkList = [];
//循环 记得终止条件
while (start <= file.size) {
end = start + chunkSize;
if (end > file.size) {
end = file.size;
}
let chunk;
if (file.size <= chunkSize) {
chunk = file.slice(start, file.size); // 本质上 file是属于BLOB类的,因而也有了对应的slice方法
} else {
chunk = file.slice(start, end);
}
start = end;
chunkList.push(chunk);
console.log(`chunk`, chunk);
if (start === file.size) {
break;
}
}
}
以上.