用阿里云分片续传,有时候会因为网络等其他原因,不在继续上传,等在点击继续上传时候,发现上传的数据跟本地数据不一致,有时也会发生文件上传超过百分之一百的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()
}
}
https://thoughts.aliyun.com/workspaces/5f61616a1baf0f001dca0e94/docs/5f9fb860cdb6dc000122b1e4
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。