閱讀395 返回首頁    go 英雄聯盟


GetObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲

用於獲取某個Object,此操作要求用戶對該Object有讀權限。

請求語法

  1. GET /ObjectName HTTP/1.1
  2. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  3. Date: GMT Date
  4. Authorization: SignatureValue
  5. Range: bytes=ByteRange(可選)

請求參數(Request Parameters)

OSS支持用戶在發送GET請求時,可以自定義OSS返回請求中的一些Header,前提條件用戶發送的GET請求必須攜帶簽名。這些Header包括:

名稱 描述
response-content-type 設置OSS返回請求的content-type頭
類型:字符串
默認值:無
response-content-language 設置OSS返回請求的content-language頭
類型:字符串
默認值:無
response-expires 設置OSS返回請求的expires頭
類型:字符串
默認值:無
response-cache-control 設置OSS返回請求的cache-control頭
類型:字符串
默認值:無
response-content-disposition 設置OSS返回請求的content-disposition頭
類型:字符串
默認值:無
response-content-encoding 設置OSS返回請求的content-encoding頭
類型:字符串
默認值:無

請求Header

名稱 描述
Range 指定文件傳輸的範圍。如,設定 bytes=0-9,表示傳送第0到第9這10個字符。
類型:字符串
默認值:無
If-Modified-Since 如果指定的時間早於實際修改時間,則正常傳送文件,並返回200 OK;否則返回304 not modified
類型:字符串
默認值:無
時間格式:GMT時間,例如Fri, 13 Nov 2015 14:47:53 GMT
If-Unmodified-Since 如果傳入參數中的時間等於或者晚於文件實際修改時間,則正常傳輸文件,並返回200 OK;否則返回412 precondition failed錯誤
類型:字符串
默認值:無
時間格式:GMT時間,例如Fri, 13 Nov 2015 14:47:53 GMT
If-Match 如果傳入期望的ETag和object的 ETag匹配,則正常傳輸文件,並返回200 OK;否則返回412 precondition failed錯誤
類型:字符串
默認值:無
If-None-Match 如果傳入的ETag值和Object的ETag不匹配,則正常傳輸文件,並返回200 OK;否則返回304 Not Modified
類型:字符串
默認值:無

細節分析

  1. GetObject通過range參數可以支持斷點續傳,對於比較大的Object建議使用該功能。
  2. 如果在請求頭中使用Range參數;則返回消息中會包含整個文件的長度和此次返回的範圍,例如:Content-Range: bytes 0-9/44,表示整個文件長度為44,此次返回的範圍為0-9。如果不符合範圍規範,則傳送整個文件,並且不在結果中提及Content-Range。
  3. 如果“If-Modified-Since”元素中設定的時間不符合規範,直接返回文件,並返回200 OK。
  4. If-Modified-Since和If-Unmodified-Since可以同時存在,If-Match和If-None-Match也可以同時存在。
  5. 如果包含If-Unmodified-Since並且不符合或者包含If-Match並且不符合,返回412 precondition failed
  6. 如果包含If-Modified-Since並且不符合或者包含If-None-Match並且不符合,返回304 Not Modified
  7. 如果文件不存在返回404 Not Found錯誤。錯誤碼:NoSuchKey。
  8. OSS不支持在匿名訪問的GET請求中,通過請求參數來自定義返回請求的header。
  9. 在自定義OSS返回請求中的一些Header時,隻有請求處理成功(即返回碼為200時),OSS才會將請求的header設置成用戶GET請求參數中指定的值。
  10. 若該Object為進行服務器端熵編碼加密存儲的,則在GET請求時會自動解密返回給用戶,並且在響應頭中,會返回x-oss-server-side-encryption,其值表明該Object的服務器端加密算法。
  11. 需要將返回內容進行 GZIP壓縮傳輸的用戶,需要在請求的Header中顯示方式加入 Accept-Encoding:gzip,OSS會根據文件的Content-Type和文件大小,判斷是否返回給用戶經過GZIP 壓縮的數據。如果采用了GZIP壓縮則不會附帶etag 信息。目前OSS支持GZIP壓縮的Content-Type為HTML、Javascript、CSS、XML、RSS、Json,文件大小需不小於1k。
  12. 如果文件類型為符號鏈接,返回目標文件的內容。並且, 響應頭中Content-LengthETagContent-Md5 均為目標文件的元信息;Last-Modified是目標文件和符號鏈接的最大值;其他均為符號鏈接的元信息。
  13. 如果文件類型為符號鏈接,並且目標文件不存在,返回404 Not Found錯誤。錯誤碼:SymlinkTargetNotExist。
  14. 如果文件類型為符號鏈接,並且目標文件類型是符號鏈接,返回400 Bad request錯誤。錯誤碼:InvalidTargetType。

    示例

請求示例:

  1. GET /oss.jpg HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Date: Fri, 24 Feb 2012 06:38:30 GMT
  4. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:UNQDb7GapEgJCZkcde6OhZ9Jfe8=

返回示例:

  1. HTTP/1.1 200 OK
  2. x-oss-request-id: 3a89276f-2e2d-7965-3ff9-51c875b99c41
  3. x-oss-object-type: Normal
  4. Date: Fri, 24 Feb 2012 06:38:30 GMT
  5. Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
  6. ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
  7. Content-Type: image/jpg
  8. Content-Length: 344606
  9. Server: AliyunOSS
  10. [344606 bytes of object data]

Range請求示例:

  1. GET //oss.jpg HTTP/1.1
  2. Host:oss-example. oss-cn-hangzhou.aliyuncs.com
  3. Date: Fri, 28 Feb 2012 05:38:42 GMT
  4. Range: bytes=100-900
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:qZzjF3DUtd+yK16BdhGtFcCVknM=

返回示例:

  1. HTTP/1.1 206 Partial Content
  2. x-oss-request-id: 28f6508f-15ea-8224-234e-c0ce40734b89
  3. x-oss-object-type: Normal
  4. Date: Fri, 28 Feb 2012 05:38:42 GMT
  5. Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
  6. ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
  7. Accept-Ranges: bytes
  8. Content-Range: bytes 100-900/344606
  9. Content-Type: image/jpg
  10. Content-Length: 801
  11. Server: AliyunOSS
  12. [801 bytes of object data]

自定義返回消息頭的請求示例:

  1. GET /oss.jpg?response-expires=Thu%2C%2001%20Feb%202012%2017%3A00%3A00%20GMT& response-content-type=text&response-cache-control=No-cache&response-content-disposition=attachment%253B%2520filename%253Dtesting.txt&response-content-encoding=utf-8&response-content-language=%E4%B8%AD%E6%96%87 HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com:
  3. Date: Fri, 24 Feb 2012 06:09:48 GMT

返回示例:

  1. HTTP/1.1 200 OK
  2. x-oss-request-id: 559CC9BDC755F95A64485981
  3. x-oss-object-type: Normal
  4. Date: Fri, 24 Feb 2012 06:09:48 GMT
  5. Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
  6. ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
  7. Content-Length: 344606
  8. Connection: keep-alive
  9. Content-disposition: attachment; filename:testing.txt
  10. Content-language: 中文
  11. Content-encoding: utf-8
  12. Content-type: text
  13. Cache-control: no-cache
  14. Expires: Fri, 24 Feb 2012 17:00:00 GMT
  15. Server: AliyunOSS
  16. [344606 bytes of object data]

符號鏈接的請求示例:

  1. GET /link-to-oss.jpg HTTP/1.1
  2. Accept-Encoding: identity
  3. Date: Tue, 08 Nov 2016 03:17:58 GMT
  4. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:qZzjF3DUtd+yK16BdhGtFcCVknM=

返回示例:

  1. HTTP/1.1 200 OK
  2. Server: AliyunOSS
  3. Date: Tue, 08 Nov 2016 03:17:58 GMT
  4. Content-Type: application/octet-stream
  5. Content-Length: 20
  6. Connection: keep-alive
  7. x-oss-request-id: 582143E6D3436A212ADCC87D
  8. Accept-Ranges: bytes
  9. ETag: "8086265EFC0211ED1F9A2F09BF462227"
  10. Last-Modified: Tue, 08 Nov 2016 03:17:58 GMT
  11. x-oss-object-type: Symlink
  12. Content-MD5: gIYmXvwCEe0fmi8Jv0YiJw==

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

  上一篇:go CopyObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲
  下一篇:go AppendObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲