对象存储

  • 分片上传

    最近更新时间:2017-01-20 03:12:48

    分片上传

    分片上传支持将一个文件切割为一系列特定大小的小数据片,分别将这些小数据片上传到服务端,全部上传完后再在服务端将这些小数据片合并成为一个资源。

    分片上传引入了两个概念:(block)和(chunk)。每个由一到多个组成,而一个资源则由一到多个组成。他们之间的关系可以用下图表述:

    资源、块、片的关系

    是上传过程中作为临时存储的单位。服务端会以约七天为单位的周期清除上传后未被合并为块(文件)的数据片(块)。

    基本流程

    与分片上传相关的API有:创建块(mkblk)上传片(bput)创建文件(mkfile)。一个完整的分片上传流程可用下图表示:

    分片上传流程

    其中的关键点如下:

    • 将待上传的文件按预定义的4MB块大小切分为若干个块。如果这个文件小于4MB,就只有一个块。
    • 将每个块再按预定义的片大小切分为若干个片,先在服务端创建一个相应块(通过调用mkblk,并带上第一个片的内容),然后再循环将所有剩下的片全部上传(通过调用bput,从而完成一个块的上传)
    • 在所有块上传完成后,通过调用mkfile将这些上传完成的块信息再严格的按顺序组装出一个逻辑资源的元信息,从而完成整个资源的分片上传过程。

    如要更准确的理解这个基本流程,可以通过阅读SDK源代码。所有SDK的源代码都公开托管在Github上。

    以上内容是否对您有帮助?
  • 提交工单