ASTRO轻应用 ASTROZERO-分段上传:上传分段

时间:2024-07-19 11:32:41

上传分段

  • 功能介绍

    初始化分段上传任务之后,可以根据指定的对象文件名和“uploadId”来分段上传数据。每一个上传的段都有一个标识它的号码,即分段号(partNumber,范围是1~10000)。对于同一个分段上传任务(即uploadId相同),分段号“partNumber”不但唯一标识这一段数据,也标识了这段数据在整个对象文件内的相对位置。如果使用同一个分段号上传了新的数据,那么存储服务端上已有的这个段号的数据将被覆盖。除了最后一个分段以外,其他分段大小必须大于5MB,最大值对于OBS、MINIO本身来说没有限制,通过AstroZero平台该接口调用时,所有分段最大值不超过100MB。每个分段不需要按顺序上传,甚至可以在不同进程、不同机器上上传,存储服务端会按照分段号排序组成最终对象。

  • URI

    POST AstroZero 域名 /u-route/baas/sys/v1.1/connectors/{connector_type}/{connector_name}/uploadpart?object=X&uploadId=Y&partNumber=Z

    表4 路径参数

    参数

    是否必选

    参数类型

    描述

    connector_type

    String

    参数解释

    连接器的类型。

    约束限制

    不涉及。

    取值范围

    • obs:与OBS对接的连接器。
    • minio:与MINIO对接的连接器。
    • objectstorageproxy:对象存储代理类型。

    默认取值

    不涉及。

    connector_name

    String

    参数解释

    连接器实例的名称,即创建连接器时命名的连接器实例名称。

    约束限制

    不涉及。

    取值范围

    不涉及。

    默认取值

    不涉及。

    object

    String

    参数解释

    上传文件到桶里的全路径,包含文件名、文件类型、上传到桶里的路径。不携带路径时,表示上传到桶的根目录下

    示例:取值为“a/b/c/test.mp4”,表示将文件“test.mp4”上传到桶的“a/b/c”路径下。如果桶中不存在该路径,会创建该路径。

    约束限制

    不涉及。

    取值范围

    不涉及。

    默认取值

    不涉及。

    uploadId

    String

    参数解释

    整个分段上传任务的标识,从初始化分段上传任务的返回结果中获取该值。

    约束限制

    不涉及。

    取值范围

    不涉及。

    默认取值

    不涉及。

    partNumber

    Number

    参数解释

    分段号。

    对于同一个分段上传任务(即uploadId相同),分段号“partNumber”不但唯一标识这一段数据,也标识了这段数据在整个对象文件内的相对位置。

    约束限制

    不涉及。

    取值范围

    1~10000。

    默认取值

    不涉及。

  • 请求参数

    请求中的body类型,按照“application/octet-stream”格式上传文件分段内容。

  • 响应参数
    表5 响应参数说明

    参数

    参数类型

    描述

    resCode

    String

    参数解释

    返回码。

    取值范围

    如果返回“0”代表请求成功,其他错误码说明请参考错误码

    resMsg

    String

    参数解释

    返回消息。

    取值范围

    如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。

    result

    Object

    参数解释

    返回分段任务对象,包含如下字段:

    • ETag:文件分段的标识, 用于后续完成上传时使用。
    • partNumber:分段号,用于后续完成上传时使用。
  • 请求示例

    已创建好OBS类型连接器,连接器实例名称为“命名空间__TestOBS”,需要向该OBS桶的“a/b/c”路径下上传大文件。已有初始化分段上传任务,标识“uploadId”为“0000017B761F112966C45D8FF0F75F13”,调用如下请求,创建分段上传任务,上传test.mp4,分段号为“1”。

    POST https://AstroZero域名/u-route/baas/sys/v1.1/connectors/obs/命名空间__TestOBS/uploadpart?object=a/b/c/test.mp4&uploadId=0000017B761F112966C45D8FF0F75F13&partNumber=1

    在请求Body中设置“application/octet-stream”格式的object,即要上传的文件数据。

  • 响应示例
    {
    	"resCode": "0",
    	"resMsg": "成功",
    	"result": {
    		"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
    		"partNumber": 1
    	}
    }

    请记录下“ETag”和“partNumber”的值,后续完成上传时需要使用。

support.huaweicloud.com/api-astrozero/astrozero_api_0090.html