分片上传支持将一个文件切割为一系列特定大小的数据片,分别将这些小数据片上传到服务端,全部上传完后再在服务端将这些数据片合并成为一个资源。
分片上传引入了两个概念:块(Block)和片(Chunk)。每个块由一到多个片组成,而一个资源则由一到多个块组成。他们之间的关系可以用下图表述:
块和片是上传过程中作为临时存储的单位。服务端会以约七天为单位的周期清除上传后未被合并为块(文件)的数据片(块)。
与分片上传相关的 API 有:创建块(mkblk)、上传片(bput)、创建文件(mkfile)。一个完整的分片上传流程可用下图表示:
其中的关键点如下:
- 将待上传的文件按预定义块大小切分为若干个块(每块大小不大于 4MB)。如果这个文件小于 4MB,就只有一个块,如果文件大于 4MB, 除最后一块外,其余块大小固定为 4MB。
- 将每个块再按预定义的片大小切分为若干个片,先在服务端创建一个相应块(通过调用mkblk,并带上第一个片的内容),然后再循环将所有剩下的片全部上传(通过调用bput,从而完成一个块的上传)
- 在所有块上传完成后,通过调用mkfile将这些上传完成的块信息再严格的按顺序组装出一个逻辑资源的元信息,从而完成整个资源的分片上传过程。
如要更准确的理解这个基本流程,可以通过阅读 SDK 源代码。所有 SDK 的源代码都公开托管在Github上。
文档反馈
(如有产品使用问题,请 提交工单)