完成分块上传
最近更新时间: 2024-08-23 15:08:00
功能描述
Complete Multipart Upload 接口请求用来实现完成整个分块上传。当使用 Upload Parts 上传完所有块以后,必须调用该 API 来完成整个文件的分块上传。在使用该 API 时,您必须在请求 Body 中给出每一个块的 PartNumber 和 ETag,用来校验块的准确性。 由于分块上传完后需要合并,而合并需要数分钟时间,因而当合并分块开始的时候,CSP 就立即返回200的状态码,在合并的过程中,CSP 会周期性的返回空格信息来保持连接活跃,直到合并完成,CSP 会在 Body 中返回合并后块的内容。
当上传块小于1MB的时候,在调用该 API 时,会返回400 EntityTooSmall。
当上传块编号不连续的时候,在调用该 API 时,会返回400 InvalidPart。
当请求 Body 中的块信息没有按序号从小到大排列的时候,在调用该 API 时,会返回400 InvalidPartOrder。
当 UploadId 不存在的时候,在调用该 API 时,会返回404 NoSuchUpload。
注意:
建议您及时完成分块上传或者舍弃分块上传,因为已上传但是未终止的块会占用存储空间进而产生存储费用。
请求
请求示例
POST /<ObjectKey>?uploadId=UploadId HTTP/1.1
Host: <BucketName-APPID>.<Endpoint>
Date: GMT Date
Content-length: Size
Authorization: Auth String
说明:
Authorization: Auth String(详情请参阅请求签名章节)
请求头
公共头部
该请求操作的实现使用公共请求头,了解公共请求头详细请参见 公共请求头部 章节。
非公共头部
该请求操作无特殊的请求头部信息。
请求体
该 API 接口请求的请求体具体节点内容为:
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"fc392a65890e447ff4e2d256489a9773"</ETag>
</Part>
<Part>
<PartNumber>2</PartNumber>
<ETag>"fc392a65890e447ff4e2d256489a9773"</ETag>
</Part>
...
</CompleteMultipartUpload>
具体的数据内容如下:
节点名称(关键字) | 父节点 | 描述 | 类型 | 必选 |
---|---|---|---|---|
CompleteMultipartUpload | 无 | 用来说明本次分块上传的所有信息 | Container | 是 |
Container 节点 CompleteMultipartUpload 的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 | 必选 |
---|---|---|---|---|
Part | CompleteMultipartUpload | 用来说明本次分块上传中每个块的信息 | Container | 是 |
Container 节点 Part 的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 | 必选 |
---|---|---|---|---|
PartNumber | CompleteMultipartUpload.Part | 块编号 | Integer | 是 |
ETag | CompleteMultipartUpload.Part | 每个块文件的 MD5 算法校验值 | String | 是 |
响应
响应头
公共响应头
该响应使用公共响应头,了解公共响应头详细请参见 公共响应头部 章节。
响应体
该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<CompleteMultipartUploadResult>
<Location>examplebucket-1250000000.cos.ap-beijing.myqcloud.com/ObjectName</Location>
<Bucket>examplebucket-1250000000</Bucket>
<Key>examplebucket</Key>
<ETag>"3a0f1fd698c235af9cf098cb74aa25bc"</ETag>
</CompleteMultipartUploadResult>
具体的数据内容如下:
节点名称(关键字) | 父节点 | 描述 | 类型 |
---|---|---|---|
CompleteMultipartUploadResult | 无 | 说明所有返回信息 | Container |
Container 节点 CompleteMultipartUploadResult 的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
---|---|---|---|
Location | CompleteMultipartUploadResult | 创建 Object 的外网访问域名 | URL |
Bucket | CompleteMultipartUploadResult | 分块上传的目标Bucket,由用户自定义字符串和系统生成appid数字串由中划线连接而成,如:examplebucket-1250000000 | String |
Key | CompleteMultipartUploadResult | Object 名称 | String |
ETag | CompleteMultipartUploadResult | 合并后对象的唯一标签值,该值不是对象内容的 MD5 校验值,仅能用于检查对象唯一性 | String |
实际案例
案例一:简单案例
请求
POST /exampleobject?uploadId=1484728886e63106e87d8207536ae8521c89c42a436fe23bb58854a7bb5e87b7d77d4ddc48 HTTP/1.1
Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.com
Date: Wed,18 Jan 2017 16:17:03 GMT
Authorization: q-sign-algorithm=sha1&q-ak=AKIDWtTCBYjM5OwLB9CAwA1Qb2ThTSUjfGFO&q-sign-time=1484729794;32557625794&q-key-time=1484729794;32557625794&q-header-list=host&q-url-param-list=uploadId&q-signature=23627c8fddb3823cce4257b33c663fd83f9f820d
Content-Length: 138
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"fc392a65890e447ff4e2d256489a9773"</ETag>
</Part>
<Part>
<PartNumber>2</PartNumber>
<ETag>"fc392a65890e447ff4e2d256489a9774"</ETag>
</Part>
</CompleteMultipartUpload>
响应
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 277
Connection: keep-alive
Date: Wed,18 Jan 2017 16:17:03 GMT
Server: tencent-cos
x-cos-request-id: NTg3ZjJlMjVfNDYyMDRlXzM0YzRfMjc1
<CompleteMultipartUploadResult>
<Location>examplebucket-1250000000.cos.ap-beijing.myqcloud.com/ObjectName</Location>
<Bucket>examplebucket-1250000000</Bucket>
<Key>examplebucket</Key>
<ETag>"3a0f1fd698c235af9cf098cb74aa25bc"</ETag>
</CompleteMultipartUploadResult>
案例二:使用服务端加密SSE-COS
请求
POST /exampleobject?uploadId=2~64VtuaVu-zSWDWRliLAhbhXKy-PMQmc HTTP/1.1
Host: bucket0-1255000078.cos.chongqing.cos.****-v6-iaas.tcecloud.fsphere.cn
User-Agent: coscmd-v1.8.6.24
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 6115
Authorization: q-sign-algorithm=sha1&q-ak=AKID****&q-sign-time=1627907027;1627917087&q-key-time=1627907027;1627917087&q-header-list=content-length&q-url-param-list=uploadid&q-signature=cd34070708e1c0765e46197f7360bafd23d90b62
<?xml version="1.0" encoding="utf-8"?><CompleteMultipartUpload><Part><PartNumber>1</PartNumber><ETag>24351c2ab023527f8a73327ae89c0f23</ETag></Part><Part><PartNumber>2</PartNumber><ETag>6a0f112c302ffa3a92b3876238105441</ETag></Part><Part><PartNumber>3</PartNumber><ETag>6d665d678354e21190dd409b3f43d8ed</ETag></Part></CompleteMultipartUpload>
响应
HTTP/1.1 200 OK
Content-Length: 376
Content-Type: application/xml
Date: Mon, 02 Aug 2021 12:24:47 GMT
Server: nginx
X-Cache: MISS from SZ-SQUIDWEB-81
X-Cache-Lookup: MISS from SZ-SQUIDWEB-81:8080
X-Cos-Request-Id: tx000000000000000a93744-006107e420-caabb2-default
X-Cos-Server-Side-Encryption: AES256
X-Response-Csp-Component: proxy-raw
<?xml version="1.0" encoding="UTF-8"?><CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Location>cos.chongqing.cos.****-v6-iaas.tcecloud.fsphere.cn/bucket0-1255000078/......Nginx.pdf</Location><Bucket>bucket0-1255000078</Bucket><Key>......Nginx.pdf</Key><ETag>"4233b029a4c1195daa4d605d9ba4640a-71"</ETag></CompleteMultipartUploadResult>