切片文件

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;
}