1. 程式人生 > 其它 >大檔案分片與切割

大檔案分片與切割

圖片上傳或小檔案上傳用不到分片與切割,通常使用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;
        }
      }
}

以上.

作者:致愛麗絲 出處:https://www.cnblogs.com/hjk1124/ 本文版權歸作者和部落格園共有,歡迎轉載,但必須在文章頁面給出原文連結並標名原文作者,否則保留追究法律責任的權利。