js大文件切片

<!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>

 

posted @ 2023-10-06 11:38  暴燥的小蓝鲸  阅读(135)  评论(0)    收藏  举报