帮你快速理解、总结文档立即下载

UploadPartCopy

最近更新时间:2026-10-21 18:34:04
我的收藏
UploadPartCopy 接口请求实现将一个已存在对象的内容(或其某个字节范围)作为指定分块上传任务的一个分块。通过 x-cos-copy-source 指定源对象,x-cos-copy-source-range 指定字节范围,以避免在客户端重新下载与上传源对象数据。需先调用 InitiateMultipartUpload 接口获取目标对象的 UploadId,再使用本接口逐块复制源对象内容;分块上传完成后,调用 CompleteMultipartUpload 完成对象合并。

注意事项

仅支持同桶拷贝

源对象与目标对象必须位于同一存储桶。当 x-cos-copy-source 中解析出的源存储桶名与请求 Host 中的存储桶名不一致时,请求返回 InvalidCopySource。

源对象必须为文件对象

本接口只支持复制文件对象,不支持目录对象。x-cos-copy-source 中的源对象键末尾为 / 时,请求返回 400 InvalidCopySource。

分块编号

partNumber 必须为1到10000之间的整数(包含1和10000)。超出范围将返回 InvalidArgument。各分块允许乱序上传,最终对象内容按分块编号升序拼接。

单分块大小限制

单次复制的分块大小不能超过5 GiB,超出时返回 EntityTooLarge。当源对象大于5 GiB 时,必须通过 x-cos-copy-source-range 限定每次复制的字节范围,使每个分块大小不超过5 GiB。

分块覆盖

若使用相同的 UploadId 和 PartNumber 重复调用本接口或 UploadPart,后到达的请求将覆盖之前已上传的同编号分块。

UploadId 有效性

UploadId 不存在、已被 AbortMultipartUpload 终止、或已被 CompleteMultipartUpload 完成时,本接口返回 NoSuchUpload。

请求

请求语法

PUT /<ObjectKey>?partNumber=<PartNumber>&uploadId=<UploadId> HTTP/1.1
Host: <BucketName-APPID>.cosrapid.<Region>.myqcloud.com
Date: <GMT Date>
x-cos-copy-source: <BucketName-APPID>.cosrapid.<Region>.myqcloud.com/<SourceObjectKey>
x-cos-copy-source-range: bytes=<first>-<last> # 可选;不指定时复制整个源对象
Content-Length: 0
Authorization: <Auth String>
说明:
Authorization 字段的具体格式见 公共请求头部。

请求参数

参数名称
描述
类型
是否必选
partNumber
标识本次分块上传的编号,取值范围为 1 到 10000(包含两端)
integer
是
uploadId
调用 InitiateMultipartUpload 接口初始化分块上传时返回的 UploadId
string
是

请求头部

除 公共请求头部 外,本接口还支持以下请求头部:
Header 名称
描述
类型
是否必选
x-cos-copy-source
源对象的 URL,格式为 <BucketName-APPID>.cosrapid.<Region>.myqcloud.com/<SourceObjectKey>,其中对象键需经过 URL encode。源存储桶必须与目标存储桶相同,否则返回 InvalidCopySource
string
是
x-cos-copy-source-range
源对象的字节范围,格式为 bytes=<first>-<last>,first 和 last 都是基于 0 开始的偏移量,且必须同时指定,例如 bytes=0-9 表示拷贝源对象的开始 10 个字节。不指定时表示拷贝整个对象。格式不合法时返回 InvalidRange
string
否

请求体

该请求的请求体为空。

响应

响应头部

仅返回 公共响应头部,本接口无私有响应头部。

响应体

响应体为 application/xml 格式:
<?xml version="1.0" encoding="UTF-8"?>
<CopyPartResult>
<ETag>string</ETag>
<LastModified>string</LastModified>
</CopyPartResult>
具体节点说明:
节点名称
父节点
描述
类型
CopyPartResult
无
保存 UploadPartCopy 结果的所有信息
Container
ETag
CopyPartResult
本分块的 MD5 校验值,使用双引号包裹。该值需要在调用 CompleteMultipartUpload 时作为对应分块的 ETag 一并提交
string
LastModified
CopyPartResult
本分块的最近一次上传时间,UTC 时区,ISO 8601 格式,秒精度,例如 2019-05-29T04:10:12Z
string

错误码

本接口遵循统一的错误响应和错误码,详情请参见 错误码 文档。

实际案例

案例一:复制源对象的部分内容作为一个分块

请求

PUT /exampleobject?partNumber=1&uploadId=1585130821cbb7df1d11846c073ad648e8f33b087cec2381df437acdc833cf654b9ecc6361 HTTP/1.1
Host: examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com
Date: Wed, 29 May 2019 04:10:12 GMT
x-cos-copy-source: examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com/sourceobject
x-cos-copy-source-range: bytes=0-1048575
Content-Length: 0
Authorization: q-sign-algorithm=sha1&q-ak=AKIDXXXXXXXX&q-sign-time=1559074212;1559077812&q-key-time=1559074212;1559077812&q-header-list=content-length;date;host;x-cos-copy-source;x-cos-copy-source-range&q-url-param-list=partnumber;uploadid&q-signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Connection: keep-alive
Date: Wed, 29 May 2019 04:10:12 GMT
x-cos-request-id: NjUwMDAwMDAwMDAwMDAwMDAw

<?xml version="1.0" encoding="UTF-8"?>
<CopyPartResult>
<ETag>"39270a968a357d24207e9911162507eb"</ETag>
<LastModified>2019-05-29T04:10:12Z</LastModified>
</CopyPartResult>

案例二:复制完整源对象作为一个分块

不指定 x-cos-copy-source-range,表示将整个源对象作为一个分块写入。源对象大小不能超过 5 GiB。

请求

PUT /exampleobject?partNumber=2&uploadId=1585130821cbb7df1d11846c073ad648e8f33b087cec2381df437acdc833cf654b9ecc6361 HTTP/1.1
Host: examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com
Date: Wed, 29 May 2019 04:10:12 GMT
x-cos-copy-source: examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com/sourceobject-small
Content-Length: 0
Authorization: q-sign-algorithm=sha1&q-ak=AKIDXXXXXXXX&q-sign-time=1559074212;1559077812&q-key-time=1559074212;1559077812&q-header-list=content-length;date;host;x-cos-copy-source&q-url-param-list=partnumber;uploadid&q-signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Connection: keep-alive
Date: Wed, 29 May 2019 04:10:12 GMT
x-cos-request-id: NjUwMDAwMDAwMDAwMDAwMDAw

<?xml version="1.0" encoding="UTF-8"?>
<CopyPartResult>
<ETag>"ee8de918d05640145b18f70f4c3aa602"</ETag>
<LastModified>2019-05-29T04:10:12Z</LastModified>
</CopyPartResult>