此操作用來創建一個存儲在OOS里的文件拷貝。類似于執行一個GET,然后再執行一次PUT。要執行拷貝請求,用戶需要對源文件有讀權限,對目標Bucket有寫權限。
注意
當OOS接收到請求或者正在執行拷貝操作時,拷貝操作可能會返回失敗。如果在拷貝操作開始之前出現異常,OOS返回標準的錯誤信息。如果在拷貝操作過程中出現異常,由于200 OK狀態碼是先返回的,這意味著200 OK響應體可能包含成功或錯誤。請在客戶端應用程序中解析響應體的內容并進行適當處理。
請求語法
PUT /destinationObject HTTP/1.1
Host: destinationBucket.oos-cn.ctyunapi.cn
x-amz-copy-source: /source_bucket/sourceObject
x-amz-metadata-directive: metadata_directive
x-amz-copy-source-if-match: etag
x-amz-copy-source-if-none-match: etag
x-amz-copy-source-if-unmodified-since: time_stamp
x-amz-copy-source-if-modified-since: time_stamp
x-amz-meta-paramater: value
Authorization: SignatureValue
Date: date請求頭
| 名稱 | 描述 | 是否必須 |
|---|---|---|
| x-amz-copy-source | 源Bucket和文件的名稱,用斜杠(/)分割。 類型:字符串。 | 是 |
| x-amz-metadata-directive | 指明元數據是源文件的拷貝或者元數據被請求頭提供的元數據覆蓋。 類型:字符串。 取值:
默認值為COPY。 注意 如果取值為COPY,源文件和目的文件相同,則必須攜帶x-amz-storage-class,否則不能拷貝,返回400錯誤碼。 | 否 |
| x-amz-copy-source-if-match | 只有當源文件的Etag與給定Etag匹配時,才能執行文件拷貝操作,否則返回412 HTTP狀態碼錯誤。 類型:字符串。 | 否 |
| x-amz-copy-source-if-none-match | 只有當源文件的Etag與給定Etag不匹配時,才能執行文件拷貝操作,否則返回412 HTTP狀態碼錯誤。 類型:字符串。 | 否 |
| x-amz-copy-source-if-unmodified-since | 只有源文件在指定時間點之后沒有修改,才執行文件拷貝操作,否則返回412錯誤。 類型:字符串。 取值:格式為EEE, d MMM yyyy HH:mm:ss 'GMT'。 | 否 |
| x-amz-copy-source-if-modified-since | 只有源文件在指定時間點之后修改過,才執行文件拷貝操作,否則返回412錯誤。 類型:字符串。 取值:格式為EEE, d MMM yyyy HH:mm:ss 'GMT'。 | 否 |
| x-amz-storage-class | 目標文件的存儲類型。 類型:字符串。 取值:
默認值為STANDARD。 | 否 |
| x-ctyun-data-location | 設置數據存儲的位置。 注意 香港節點不支持此參數。 類型:字符串。 取值: 格式為:type=Local,scheduleStrategy=scheduleStrategy或者type=Specified,location=location,scheduleStrategy=scheduleStrategy
| 否 |
| x-amz-meta-paramater | 用戶自定義的元數據,用戶可以根據需要,自定義一些元數據的參數。 類型:字符串。 | 否 |
響應結果
| 名稱 | 描述 |
|---|---|
| Content-Length | 響應體的長度。只有客戶端攜帶Expect: 102-processing請求頭,才會返回該響應頭。 |
| CopyObjectResult | 包含所有返回元素的容器。 類型:容器。 子節點:LastModified、Etag。 |
| LastModified | 返回文件最后一次修改的日期。 類型:字符串。 父節點:CopyObjectResult。 |
| ETag | 返回新文件的ETag。ETag只反映文件內容發生了改變,元數據未改變。 類型:字符串。 父節點:CopyObjectResult。 |
請求示例
將存儲桶example-bucket中的文件1.txt復制一份到本存儲桶,新文件命名為2.txt。
PUT /2.txt HTTP/1.1
Host: example-bucket.oos-dhv6.ctyunapi.cn
User-Agent: curl/7.68.0
Accept: */*
x-amz-date: 20210625T033636Z
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Content-Type: application/x-www-form-urlencoded; charset=utf-8
x-amz-copy-source: /testbucket001/1.txt
Content-Length: 0
Authorization: SignatureValue響應示例
HTTP/1.1 200 OK
Date: Fri, 25 Jun 2021 03:37:22 GMT
x-amz-request-id: 28fcb1549c45469228746b7c827f82616880808d8876918e66
Content-Type: application/xml
Transfer-Encoding: chunked
Server: CTYUN
<CopyObjectResult>
<LastModified>2021-06-25T03:37:23.727Z</LastModified>
<ETag>eb733a00c0c9d336e65691a37ab54293</ETag>
</CopyObjectResult>