切片檔案

blob.slice() 方法用於建立新的 Blob 物件,該物件包含源 Blob 的指定位元組範圍內的資料。此方法也可用於 File 例項,因為 File 擴充套件了 Blob。

在這裡,我們在特定數量的 blob 中切片檔案。這在你需要處理太大而無法一次性讀取記憶體中的檔案的情況下尤其有用。然後我們可以使用 FileReader 逐個讀取塊。

/**
* @param {File|Blob} - file to slice
* @param {Number} - chunksAmount
* @return {Array} - an array of Blobs
**/
function sliceFile(file, chunksAmount) {
  var byteIndex = 0;
  var chunks = [];
    
  for (var i = 0; i < chunksAmount; i += 1) {
    var byteEnd = Math.ceil((file.size / chunksAmount) * (i + 1));
    chunks.push(file.slice(byteIndex, byteEnd));
    byteIndex += (byteEnd - byteIndex);
  }

  return chunks;
}