Skip to Content
对象存储 US3upload_part_copy

拷贝分片 - UploadPartCopy

简介

通过在UploadPart请求的基础上增加一个请求头 X-Ufile-Copy-Source 来调用UploadPartCopy接口,实现从一个已存在的Object中拷贝数据来上传一个Part。

注意事项

当拷贝一个大于100 MB的文件时,必须使用UploadPartCopy的方式进行拷贝。如果想通过单个操作拷贝小于100 MB的文件,请参见CopyObject

使用UploadPartCopy接口时,有如下注意事项:

  • 执行UploadPartCopy的源Bucket地址和目标Bucket地址必须是同一个Region。
  • 调用该接口上传Part数据前,必须先调用InitiateMultipartUpload接口来获取一个US3服务器颁发的Upload ID。
  • MultipartUpload要求除最后一个Part以外,其他的Part大小都要等于4 MB。因不确定是否为最后一个Part,UploadPart/UploaderPartCopy接口并不会立即校验上传Part的大小,只有当CompleteMultipartUpload的时候才会校验。

定义

句法(Syntax):

PUT /<object_name>?uploadId=<upload_id>&partNumber=<part_number> HTTP/1.1 Host: <bucket_name>.cn-bj.ufileos.com Authorization: <token> Content-Type: <mimetype> Content-Length: <length> X-Ufile-Copy-Source: /SourceBucketName/SourceObjectName X-Ufile-Copy-Source-Range: bytes=first-last

请求参数(Request Parameters)

请求头(Request Headers)

NameTypeDescriptionRequired
AuthorizationString上传请求的授权签名,/docs/ufile/api/authorization?id=文件管理签名算法Yes
X-Ufile-Copy-SourceString指定拷贝的源地址,默认值:无Yes
X-Ufile-Copy-Source-Rangeint源Object的拷贝范围。例如设置bytes=0 ~ 9,表示拷贝0到9这10个字符。
* 当指定该请求头时,则返回消息中会包含整个文件的长度和此次拷贝的范围,例如:Content-Range: bytes 0 ~ 9/44,表示整个文件长度为44,此次拷贝的范围为0 ~ 9。
* 当指定的范围不符合规范时,返回419。
Yes

请求元素(Request Elements)

说明:未使用。

响应(Responses)

响应头(Response Headers)

NameTypeDescription
ETagString已经上传文件在US3中的哈希值
X-SessionIdString请求失败时返回本次请求的会话Id

响应元素(Response Elements)

NameTypeDescription
PartNumberInteger本次分片上传的分片号码

示例

请求示例(Example Request):

PUT /demokey?uploadId=0f188eb2-5e19-49c3-94c9-36fb5a0ff72a&partNumber=0 HTTP/1.1 Host: <bucket_name>.cn-bj.ufileos.com Authorization: demouser@ucloud.cn13424346821929713944:S5FVD2w613MKb/hisjaqHdjvn9U= X-Ufile-Copy-Source: /bucket-us3-test/object-us3 X-Ufile-Copy-Source-Range: bytes=0-4194303

响应示例(Example Response):

HTTP/1.1 200 OK Content-Type: application/json Content-Length: 4194304 ETag: "AQAAABP9DJdoo2X0hKyax2pVTLQPaVzH" Content-Range: bytes 0-4194303/5194303 { "PartNumber": 0 }