接口说明
该接口为通过在 UploadPart 请求的基础上增加一个请求头 x-oss-copy-source 来调用 UploadPartCopy 接口,实现从一个已存在的 Object 中拷贝数据来上传一个 Part。
注意事项
当拷贝一个大于 1 GB 的文件时,必须使用 UploadPartCopy 的方式进行拷贝。如果想通过单个操作拷贝小于 1 GB 的文件,请参见 CopyObject 。
使用 UploadPartCopy 接口时,有如下注意事项:
-
不允许拷贝以 AppendObject 方式上传的 Object。
-
执行 UploadPartCopy 的源 Bucket 地址和目标 Bucket 地址必须是同一个 Region。
-
调用该接口上传 Part 数据前,必须先调用 InitiateMultipartUpload 接口来获取一个 OSS 服务器颁发的 Upload ID。
-
若调用 InitiateMultipartUpload 接口时,指定了 x-oss-server-side-encryption 请求头,则会对上传的 Part 进行加密编码,并在 UploadPart 响应头中返回 x-oss-server-side-encryption 头,其值表明该 Part 的服务器端加密算法,详情请参见 InitiateMultipartUpload 。
-
MultipartUpload 要求除最后一个 Part 以外,其他的 Part 大小都要大于 100 KB。因不确定是否为最后一个 Part,UploadPart 接口并不会立即校验上传 Part 的大小,只有当 CompleteMultipartUpload 的时候才会校验。
版本控制
UploadPartCopy 默认从一个已存在的 Object 的当前版本中拷贝数据来上传一个 Part。允许通过在请求头 x-oss-copy-source 中附带 versionId 的子条件,实现从 Object 的指定版本进行拷贝,例如 x-oss-copy-source : /SourceBucketName/SourceObjectName?versionId=111111。
如果未指定 versionId 且拷贝 Object 的当前版本为删除标记(Delete Marker),OSS 将返回 404 Not Found。通过指定 versionId 来拷贝删除标记时,OSS 将返回 400 Bad Request。
流控信息
请求语法
PUT /{key} HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
x-oss-copy-source: string
x-oss-copy-source-range: string
x-oss-copy-source-if-match: string
x-oss-copy-source-if-none-match: string
x-oss-copy-source-if-unmodified-since: string
x-oss-copy-source-if-modified-since: string
路径参数
字段名称 | 字段详情 |
---|---|
keystring | Object 完整路径。 示例值:exampledir/exampleobject/txt |
请求参数
字段名称 | 字段详情 |
---|---|
bucketstring | Bucket 名称。 示例值:examplebucket |
x-oss-copy-sourcestring | 拷贝源地址(必须有可读权限)。 示例值:/oss-example/ src-object |
partNumberinteger<int64> | 每一个上传的 Part 都有一个标识它的号码(partNumber)。展开详情 注意
该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 示例值:10000 |
uploadIdstring | uploadId 用于唯一标识上传的 Part 属于哪个 Object。 示例值:0004B999EF5A239BB9138C6227D69F95 |
x-oss-copy-source-rangestring | 源 Object 的拷贝范围。例如设置 bytes=0~9,表示拷贝 0 到 9 这 10 个字符。展开详情 示例值:bytes=100-6291756 |
x-oss-copy-source-if-matchstring | 如果源 Object 的 ETAG 值和用户提供的 ETAG 相等,则执行拷贝操作;否则返回 412 HTTP 错误码(预处理失败)。展开详情 示例值:5B3C1A2E053D763E1B002CC607C5**** |
x-oss-copy-source-if-none-matchstring | 如果传入的 ETag 值和 Object 的 ETag 不匹配,则正常传输文件,并返回 200 OK;否则返回 304 Not Modified。展开详情 示例值:5B3C1A2E053D763E1B002CC607C5**** |
x-oss-copy-source-if-unmodified-sincestring | 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回 200 OK;否则返回 412 precondition failed 错误。展开详情 示例值:Fri, 13 Oct 2015 14:47:53 GMT |
x-oss-copy-source-if-modified-sincestring | 如果指定的时间早于实际修改时间,则正常传送文件,并返回 200 OK;否则返回 304 not modified。展开详情 示例值:Fri, 13 Nov 2015 14:47:53 GMT |
返回参数
字段名称 | 字段详情 |
---|---|
CopyPartResultobject | 保存 UploadPartCopy 结果的容器。 |
返回示例
变更历史
变更时间 | 变更内容概要 | 操作 | |
---|---|---|---|
2024-02-21 |