閱讀360 返回首頁    go 人物


UploadPartCopy__關於MultipartUpload的操作_API 參考_對象存儲 OSS-阿裏雲

Upload Part Copy通過從一個已存在的Object中拷貝數據來上傳一個Part。通過在Upload Part請求的基礎上增加一個Header:x-oss-copy-source來調用該接口。當拷貝一個大於1GB的文件時,必須使用Upload Part Copy的方式進行拷貝。如果想通過單個操作拷貝小於1GB的文件,可以參考Copy Object。

請求語法

  1. PUT /ObjectName? partNumber=PartNumber&uploadId=UploadId HTTP/1.1
  2. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  3. Date: GMT Date
  4. Content-Length: Size
  5. Authorization: SignatureValue
  6. x-oss-copy-source: /SourceBucketName/SourceObjectName
  7. x-oss-copy-source-range:bytes=first-last

請求Header

除了通用的請求Header,Upload Part Copy請求中通過下述Header指定拷貝的源Object地址和拷貝的範圍。

名稱 描述
x-oss-copy-source 複製源地址(必須有可讀權限)
類型:字符串
默認值:無
x-oss-copy-source-range 源Object的拷貝範圍。如,設定 bytes=0-9,表示傳送第0到第9這10個字符。 當拷貝整個源Object時不需要該請求Header。
類型:整型
默認值:無

下述請求Header作用於x-oss-copy-source指定的源Object。

名稱 描述
x-oss-copy-source-if-match 如果源Object的ETAG值和用戶提供的ETAG相等,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無
x-oss-copy-source-if-none-match 如果源Object自從用戶指定的時間以後就沒有被修改過,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無
x-oss-copy-source-if-unmodified-since 如果傳入參數中的時間等於或者晚於文件實際修改時間,則正常傳輸文件,並返回200 OK;否則返回412 precondition failed錯誤。
類型:字符串
默認值:無
x-oss-copy-source-if-modified-since 如果源Object自從用戶指定的時間以後被修改過,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無

響應元素(Response Elements)

名稱 描述
x-oss-copy-source-if-match 如果源Object的ETAG值和用戶提供的ETAG相等,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無
x-oss-copy-source-if-none-match 如果源Object自從用戶指定的時間以後就沒有被修改過,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無
x-oss-copy-source-if-unmodified-since 如果傳入參數中的時間等於或者晚於文件實際修改時間,則正常傳輸文件,並返回200 OK;否則返回412 precondition failed錯誤。
類型:字符串
默認值:無
x-oss-copy-source-if-modified-since 如果源Object自從用戶指定的時間以後被修改過,則執行拷貝操作;否則返回412 HTTP錯誤碼(預處理失敗)。
類型:字符串
默認值:無

細節分析

  1. 調用該接口上傳Part數據前,必須調用Initiate Multipart Upload接口,獲取一個OSS服務器頒發的Upload ID。
  2. Multipart Upload要求除最後一個Part以外,其他的Part大小都要大於100KB。但是Upload Part接口並不會立即校驗上傳Part的大小(因為不知道是否為最後一塊);隻有當Complete Multipart Upload的時候才會校驗。
  3. 不指定x-oss-copy-source-range請求頭時,表示拷貝整個源Object。當指定該請求頭時,則返回消息中會包含整個文件的長度和此次拷貝的範圍,例如:Content-Range: bytes 0-9/44,表示整個文件長度為44,此次拷貝的範圍為0-9。當指定的範圍不符合範圍規範時,則拷貝整個文件,並且不在結果中提及Content-Range。
  4. 若調用Initiate Multipart Upload接口時,指定了x-oss-server-side-encryption請求頭,則會對上傳的Part進行加密編碼,並在Upload Part響應頭中返回x-oss-server-side-encryption頭,其值表明該Part的服務器端加密算法,具體見Initiate Multipart Upload接口。
  5. 該操作不能拷貝通過Append追加上傳方式產生的object。

示例

請求示例:

  1. PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Length:6291456
  4. Date: Wed, 22 Feb 2012 08:32:21 GMT
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:J/lICfXEvPmmSW86bBAfMmUmWjI=
  6. x-oss-copy-source: /oss-example/ src-object
  7. x-oss-copy-source-range:bytes=100-6291756

返回示例:

  1. HTTP/1.1 200 OK
  2. Server: AliyunOSS
  3. Connection: keep-alive
  4. x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0c21a
  5. Date: Thu, 17 Jul 2014 06:27:54 GMT'
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <CopyPartResult xmlns=”https://doc.oss-cn-hangzhou.aliyuncs.com”>
  8. <LastModified>2014-07-17T06:27:54.000Z </LastModified>
  9. <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE"</ETag>
  10. </CopyPartResult>

最後更新:2016-11-23 17:16:08

  上一篇:go UploadPart__關於MultipartUpload的操作_API 參考_對象存儲 OSS-阿裏雲
  下一篇:go CompleteMultipartUpload__關於MultipartUpload的操作_API 參考_對象存儲 OSS-阿裏雲