<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>js文件切片</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<input type="file" name="" id="file1"><input type="button" value="确定" onclick="submit()">
</body>
</html>
<script>
function submit(){
let file=$("#file1")[0].files[0];
chunks(file,10)//超过10M进行切片
}
function chunks(file,chunkSize)
{
chunkSize = chunkSize * 1024 * 1024;//切片大小
console.log("文件大小:"+file.size)
let chunkNum;
if (file.size <= chunkSize) {
chunkNum = 1;
} else {
chunkNum = Math.ceil(file.size / chunkSize); //这里使用进一法向上取整函数,防止最后一块不够分
}
console.log(`切片数:`, chunkNum);//chunknum就是要切的份数
let blob=[];
//根据chunkNum开始循环切片 把切片push到blob数组对象
for(let i=0; i<chunkNum;i++){
let start=chunkSize*i;
let end=start+chunkSize;
if(i===chunkNum-1){
end=file.size;//文件大小 小于 切片大小 直接取整个文件
}
blob.push(file.slice(start,end))
}
console.log(blob)//切完片的文件,可以调用文件上传api对文件上传
}
</script>