大檔案分片與切割
阿新 • • 發佈:2021-07-31
圖片上傳或小檔案上傳用不到分片與切割,通常使用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/ 本文版權歸作者和部落格園共有,歡迎轉載,但必須在文章頁面給出原文連結並標名原文作者,否則保留追究法律責任的權利。