文件切片分流上传

在这里插入图片描述

	<input class="tfileHidden pointer" type="file" @change="handUploadFile">
  async handUploadFile(event) {
    const targetFile = event.target.files[0];
    const chunkSize = 1 * 1024 * 1024;
    const totalChunks = Math.ceil(targetFile.size / chunkSize);
    const promisesArr = [];
    for (let i = 0; i < totalChunks; i++) {
      const start = i * chunkSize;
      const end = Math.min(start + chunkSize, targetFile.size);
      const chunk = targetFile.slice(start, end);
      const formData = new FormData();
      formData.append('formData', chunk);
      const parr = new Promise((resolve,reject) => {
      	// 定时器模拟数据上传
        setTimeout(() => {
          if(Math.random() > 0.03) {
            resolve(i);
          } else {
            reject(i);
            console.log("reject["+i+"]:", start, end);
          }
        }, 1000);
		// 数据接口上传
		// axiosAPI.uploadFile(formData,{}).then(e => resolve(e)).catch(e => reject(e));
		// console.log("X-Chunk-Start: ", start);
		// console.log("X-Chunk-End: ", end);
      });
      promisesArr.push(parr);
    }
    await Promise.all(promisesArr).then(all => {
      console.log("文件全部上传完成: ",all);
    }).catch(error => { });
  }
文件全部上传完成:

在这里插入图片描述

文件上传异常的:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值