大文件分片上传

文件分片上传

function chunkFile(file) {
  const formData = new FormData()
  const fileReader = new FileReader() // 文件读取类
  const chunkSize = 1024 * 1024 * 10 // 单个分片大小,10M
  let fileChunkedList = [] // 文件分片完成之后的数组

  // 文件开始分片,push 到 fileChunkedList 数组中
  for (let i = 0; i < file.size; i = i + chunkSize) {
    const tmp = file.slice(i, Math.min(i + chunkSize, file.size)) // Blob
    if (i === 0) fileReader.readAsArrayBuffer(tmp) // 读取文件
    fileChunkedList.push(tmp)
  }

  console.log(fileChunkedList)
  // 在文件读取完毕之后,开始计算文件
  fileReader.onload = async () => {
    // 将fileChunkedList转成FormData对象,并加入上传时需要的数据
    fileChunkedList = await fileChunkedList.map((item, index) => {
      formData.append('file', item) // 当前切片文件
      formData.append('maxChunk', fileChunkedList.length) // 文件切片数
      formData.append('chunk', index) // 当前文件序号
      formData.append('fileName', file.name) // 当前文件序号
      return formData
    })
    for (let [a, b] of formData.entries()) {
      console.log(a, b, '--------------')
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值