开发者社区> 问答> 正文

阿里云断点续传,当文件暂停上传然后在继续上传以后,文件数据跟原文件不一致

用阿里云分片续传,有时候会因为网络等其他原因,不在继续上传,等在点击继续上传时候,发现上传的数据跟本地数据不一致,有时也会发生文件上传超过百分之一百的qingk情况,这些情况都是偶发,下面是代码,望大神指点

let tempCheckpointObj = {}
export default class OssSectionUpload {
  constructor (fileName, file, url) {
    this.fileName = fileName
    this.file = file
    this.url = url
    this.client = infoClient()
  }
  // 上传文件
  async multipartUpload (callback) {
    try {
      // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
      let that = this
      await this.client.multipartUpload(this.url, this.file, {
        partSize: 1000 * 1024,
        progress: function (p, checkpoint) {
          // 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
          tempCheckpointObj[that.fileName] = checkpoint
          callback(p, that.fileName)
        },
        checkpoint: tempCheckpointObj[that.fileName] || 0,
        meta: { year: (new Date()).getFullYear(), people: Vue.prototype.$auth.user().userName }
      }).then(res => {
        Vue.prototype.$message.success('上传成功')
      }).catch(() => {
        if (this.client.isCancel()) {
          Vue.prototype.$message.error('上传失败')
        } else {
          Vue.prototype.$message.error('网络异常')
        }
      })
    } catch (e) {
      console.log(e)
    }
  }
  // 取消上传
  cancleUpload () {
    this.client.cancel()
  }
}

1610347839(1).png https://thoughts.aliyun.com/workspaces/5f61616a1baf0f001dca0e94/docs/5f9fb860cdb6dc000122b1e4

展开
收起
游客pux7cvy5lynhk 2021-01-12 19:15:46 1008 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载