断点续传上传将要上传的文件分成若干个分片(Part)分别上传,所有分片都上传完成后,将所有分片合并成完整的文件,完成整个文件的上传。
说明 以下示例代码中的catch语法,请自行学习es6 promise、async/await。SDK的使用方式,请参见
安装。
断点续传详情请参见开发指南中的断点续传。您还可以通过设置生命周期规则来定时清理不需要的Part,详情请参考管理碎片。
分片上传提供 progress 参数方便用户传递进度回调,在回调中 SDK 将当前已经上传成功的比例和断点信息作为参数。为了实现断点上传,可以在上传过程中保存断点信息(checkpoint),发生错误后,再将已保存的 checkpoint 作为参数传递给 multipartUpload,此时将从上次失败的地方继续上传。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | let OSS = require( 'ali-oss' ); let client = new OSS({ region: '<Your region>' , accessKeyId: '<Your AccessKeyId>' , accessKeySecret: '<Your AccessKeySecret>' , bucket: '<Your bucket name>' , }); let checkpoint; async function resumeUpload() { // retry 5 times for (let i = 0 ; i < 5 ; i++) { try { const result = await client.multipartUpload( 'object-name' , filePath, { checkpoint, async progress(percentage, cpt) { checkpoint = cpt; }, }); console.log(result); break ; // break if success } catch (e) { console.log(e); } } } resumeUpload(); |
上述示例代码将 checkpoint 保存在变量中,如果程序崩溃,则 checkpoint 信息会丢失。建议将 checkpoint 保存在文件中,在程序重启后则可以从文件中读取 checkpoint 信息。