JavaScript 文件分块上传

Author Avatar
tanglijun 5月 17, 2018

本文记录 JavaScript 如何对大文件进行分块上传。

核心概念

Blob 对象提供了 slice 方法,用于创建一个包含源 Blob 的指定字节范围内的数据的新 Blob 对象。File 接口基于 Blob,继承了该方法。利用此方法,我们就可以对大文件进行分块处理。

演示代码


// 设置分块大小
var chunkSize = 1024 * 1024

// 计算总分块
var totalChunk = Math.ceil(filesize / chunkSize)

// 当前分块索引
var chunkIndex = 0

// 分块起始值
var chunkStart = 0

// 分块结束值
var chunkEnd = 0

// 迭代
while (chunkStart < filesize) {
  chunkEnd = chunkStart + chunkSize

  if (chunkEnd > filesize) {
    chunkEnd = filesize
  }

  // 在这里分块处理 :)
  file.slice(chunkStart, chunkEnd)

  chunkStart = chunkEnd
  chunkIndex += 1

  // 最后一块
  if (chunkIndex >= totalChunk) {

    // 操作
  }
}

参考资料

许可协议:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
本文链接:https://tanglj.cn/2018/05/17/slice-file-for-upload/