zoukankan      html  css  js  c++  java
  • 大文件分片与切割

    图片上传或小文件上传用不到分片与切割,通常使用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;
            }
          }
    }
    

    以上.

    作者:致爱丽丝
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接并标名原文作者,否则保留追究法律责任的权利。
  • 相关阅读:
    区别是否是 微信浏览器 ?
    添加收藏
    函数调用那点事
    移动端返回上一页,刚需!document.referrer 详解
    蓝桥杯-乘积尾零
    printf不能直接输出string类型
    bitset的简单用法
    to_string()函数(C++)
    蓝桥杯-明码
    手写C语言字符库
  • 原文地址:https://www.cnblogs.com/hjk1124/p/15084184.html
Copyright © 2011-2022 走看看