全部產品
Search
文件中心

Object Storage Service:GetObject

更新時間:Nov 23, 2024

GetObject介面用於擷取某個檔案(Object)。此操作需要對此Object具有讀許可權。

注意事項

  • GetObject介面預設可通過HTTP和HTTPS兩種方式訪問。如果要設定僅允許通過HTTPS方式訪問,請使用Bucket Policy的授權訪問方式。具體操作,請參見通過Bucket Policy授權使用者訪問指定資源

  • 如果Object類型為歸檔類型,需要先完成解凍檔案(RestoreObject)請求或為Object所在Bucket開啟歸檔直讀。

版本控制

預設情況下,調用GetObject介面僅返回Object的目前的版本。

如果在查詢參數中指定Object的versionId,則返回指定的Object版本。當versionId指定為null時,則返回versionId為null的Object版本。

請求文法

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

關於公用要求標頭Authorization的計算方法,請參見Authorization欄位計算的方法

下載OSS中的大檔案(超過100 MB)時,如果傳輸過程中受到網路環境影響,則會傳輸失敗。您可以通過HTTP Range請求擷取大檔案的部分內容。關於通過HTTP Range請求分段擷取OSS資源的更多樣本,請參見如何通過HTTP Range請求分段擷取OSS資源

要求標頭

OSS支援在GET請求中通過要求標頭來自訂回應標頭,但只有請求成功(即返回碼為200 OK)才會將回應標頭的值設定成GET要求標頭中指定的值。

說明

OSS不支援在匿名訪問的GET請求中自訂回應標頭。

名稱

類型

是否必選

描述

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頭。

預設值:無

Range

字串

指定檔案傳輸的範圍。

  • 如果指定的範圍符合規範,返回訊息中會包含整個Object的大小和此次返回Object的範圍。例如:Content-Range: bytes 0~9/44,表示整個Object大小為44,此次返回的範圍為0~9。

  • 如果指定的範圍不符合規範,則傳送整個Object,並且結果中不包含Content-Range。

預設值:無

If-Modified-Since

字串

如果指定的時間早於實際修改時間或指定的時間不符合規範,則直接返回Object,並返回200 OK;如果指定的時間等於或者晚於實際修改時間,則返回304 Not Modified。

時間格式:GMT,例如Fri, 13 Nov 2015 14:47:53 GMT

預設值:無

If-Unmodified-Since

字串

如果指定的時間等於或者晚於Object實際修改時間,則正常傳輸Object,並返回200 OK;如果指定的時間早於實際修改時間,則返回412 Precondition Failed。

時間格式:GMT,例如Fri, 13 Nov 2015 14:47:53 GMT

If-Modified-SinceIf-Unmodified-Since可以同時使用。

預設值:無

If-Match

字串

如果傳入的ETag和Object的ETag匹配,則正常傳輸Object,並返回200 OK;如果傳入的ETag和Object的ETag不匹配,則返回412 Precondition Failed。

Object的ETag值用於驗證資料是否發生了更改,您可以基於ETag值驗證資料完整性。

預設值:無

If-None-Match

字串

如果傳入的ETag值和Object的ETag不匹配,則正常傳輸Object,並返回200 OK;如果傳入的ETag和Object的ETag匹配,則返回304 Not Modified。

If-MatchIf-None-Match可以同時使用。

預設值:無

Accept-Encoding

字串

指定用戶端的編碼類別型。

如果要對返回內容進行Gzip壓縮傳輸,您需要在要求標頭中以顯示方式加入Accept-Encoding:gzip。

OSS會根據Object的Content-Type和Object大小(不小於1KB),判斷傳輸過程中是否對資料進行Gzip壓縮。滿足條件時,資料以壓縮形式傳輸,否則,資料以原始形式傳輸。

說明
  • 如果採用了Gzip壓縮且壓縮生效,則不會附帶ETag和Content-Length資訊。

  • 目前OSS支援對以下Content-Type類型的資料進行Gzip壓縮:text/cache-manifest、text/xml、text/css、text/html、text/plain、application/javascript、application/x-javascript、application/rss+xml、application/json、text/json

預設值:無

回應標頭

如果Object類型為軟連結,則返回目標Object的內容。回應標頭中Content-LengthETagContent-Md5為目標Object的中繼資料;Last-Modified取目標Object和軟連結對應的最大值(即在兩者中取更新較晚的時間);其他均為軟連結的中繼資料。

名稱

類型

描述

x-oss-server-side-encryption

字串

若Object在伺服器端採用熵編碼加密儲存,使用GET請求時,系統會自動解密返回給使用者,並且在回應標頭中返回x-oss-server-side-encryption,表明該Object的伺服器端密碼編譯演算法。

x-oss-tagging-count

字串

對象關聯的標籤的個數。僅當有讀取標籤許可權時返回。

x-oss-expiration

字串

配置了生命週期規則的Bucket中Object的到期時間。

  • Bucket已開啟版本控制

    • 未攜帶versionId發起請求

      如果請求的Object命中生命週期的刪除規則,回應標頭中會返回x-oss-expiration頭,表示Object目前的版本的到期時間。

    • 攜帶versionId發起請求

      無論請求的Object是否命中生命週期的刪除規則,回應標頭中都不會返回x-oss-expiration頭。

  • Bucket未開啟版本控制

    • 如果請求的Object命中生命週期的刪除規則,則回應標頭中會返回x-oss-expiration頭。

    • 如果請求的Object未命中生命週期的刪除規則,則回應標頭中不會返回x-oss-expiration頭。

樣本

  • 簡單的GET請求

    請求樣本

    GET /oss.jpg HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 24 Feb 2012 06:38:30 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本(當Object為檔案時)

    HTTP/1.1 200 OK
    x-oss-request-id: 3a8f-2e2d-7965-3ff9-51c875b*****
    x-oss-object-type: Normal
    Date: Fri, 24 Feb 2012 06:38:30 GMT
    Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
    ETag: "5B3C1A2E0563E1B002CC607C*****"
    Content-Type: image/jpg
    Content-Length: 344606
    Server: AliyunOSS
    [344606 bytes of object data]

    返回樣本(當Object為目錄時)

    重要

    當Object為目錄時,如果請求中帶有自訂返回訊息頭例如Range等,則自訂的返回訊息頭無效。

    HTTP/1.1 200 OK
    x-oss-request-id: 3a8f-2e2d-7965-3ff9-51c875b*****
    x-oss-object-type: Normal
    Date: Wed, 31 Mar 2021 06:38:30 GMT
    Last-Modified: Tue, 30 Mar 2021 06:07:48 GMT
    ETag: "null"
    Content-Type: application/x-directory
    Content-Length: 0
    Server: AliyunOSS
  • 帶有Range參數

    請求樣本

    GET /oss.jpg HTTP/1.1
    Host:oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 28 Feb 2012 05:38:42 GMT
    Range: bytes=100-900
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 206 Partial Content
    x-oss-request-id: 28f6-15ea-8224-234e-c0ce407*****
    x-oss-object-type: Normal
    Date: Fri, 28 Feb 2012 05:38:42 GMT
    Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
    ETag: "5B3C1A2E05E1B002CC607C*****"
    Accept-Ranges: bytes
    Content-Range: bytes 100-900/344606
    Content-Type: image/jpg
    Content-Length: 801
    Server: AliyunOSS
    [801 bytes of object data]
  • 帶自訂返回訊息頭

    請求樣本

    GET /oss.jpg?response-expires=Thu%2C%2001%20Feb%202012%2017%3A00%3A00%20GMT&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
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com:
    Date: Fri, 24 Feb 2012 06:09:48 GMT

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC75A644*****
    x-oss-object-type: Normal
    Date: Fri, 24 Feb 2012 06:09:48 GMT 
    Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
    ETag: "5B3C1A2E053D1B002CC607*****"
    Content-Length: 344606
    Connection: keep-alive
    Content-disposition: attachment; filename=testing.txt
    Content-language: 中文
    Content-encoding: utf-8
    Content-type: jpg
    Cache-control: no-cache
    Expires: Fri, 24 Feb 2012 17:00:00 GMT
    Server: AliyunOSS
    [344606 bytes of object data]
  • Object類型為軟連結

    請求樣本

    GET /link-to-oss.jpg HTTP/1.1
    Accept-Encoding: identity
    Date: Tue, 08 Nov 2016 03:17:58 GMT
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Tue, 08 Nov 2016 03:17:58 GMT
    Content-Type: application/octet-stream
    Content-Length: 20
    Connection: keep-alive
    x-oss-request-id: 582143E6A212AD*****
    Accept-Ranges: bytes
    ETag: "8086265EFC021F9A2F09BF4****"
    Last-Modified: Tue, 08 Nov 2016 03:17:58 GMT
    x-oss-object-type: Symlink
    Content-MD5: gIYmXvwCEe0fmi8Jv0Y****
  • Restore操作已完成

    請求樣本

    GET /oss.jpg HTTP/1.1
    Host: oss-archive-example.oss-cn-hangzhou.aliyuncs.com
    Date: Sat, 15 Apr 2017 09:38:30 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 58F723829F29F18D7F00*****
    x-oss-object-type: Normal
    x-oss-restore: ongoing-request="false", expiry-date="Sun, 16 Apr 2017 08:12:33 GMT"
    Date: Sat, 15 Apr 2017 09:38:30 GMT
    Last-Modified: Sat, 15 Apr 2017 06:07:48 GMT
    ETag: "5B3C1A2E0763E1B002CC607C*****"
    Content-Type: image/jpg
    Content-Length: 344606
    Server: AliyunOSS
    [354606 bytes of object data]
  • 指定versionId訪問指定版本Object

    請求樣本

    GET /example?versionId=CAEQNhiBgMDJgZCA0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY0**** HTTP/1.1
    Host: versioning-get.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 02:58:06 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 5CAC0A3EDE0170*****
    x-oss-version-id: CAEQNhiBgM0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY*****
    x-oss-object-type: Normal
    Date: Tue, 09 Apr 2019 02:58:06 GMT
    Last-Modified: Fri, 22 Mar 2018 08:07:50 GMT
    ETag: "5B3C1A2E053D7002CC607C5A*****"
    Content-Type: text/html
    Content-Length: 362149
    Server: AliyunOSS
    [362149 bytes of object data]
  • 未指定versionId且Object的目前的版本為刪除標記

    請求樣本

    GET /example HTTP/1.1
    Host: versioning-get.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:22:33 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 404 Not Found
    x-oss-request-id: 5CAC0FEADE0170*****
    x-oss-delete-marker: true
    x-oss-version-id: CAEQNxiBgyA0BYiIDc4ZDdmNTA2MGViZTRiNjE5NzZlZWM4OWM5OT*****
    Date: Tue, 09 Apr 2019 03:22:33 GMT
    Content-Type: application/xml
    Connection: keep-alive
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>NoSuchKey</Code>
      <Message>The specified key does not exist.</Message>
      <RequestId>5CAC0FEADE0170*****</RequestId>
      <HostId>versioning-get.oss-cn-hangzhou.aliyun*****</HostId>
      <Key>example</Key>
    </Error>
  • 指定versionId訪問刪除標記

    請求樣本

    GET /example?versionId=CAEQMxiBgMCfqaWA0BYiIDliMWI4MGQ0MTVmMjQ3MmE5MDNlMmY4YmFkYTk3**** HTTP/1.1
    Host: versioning-get.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:09:44 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回樣本

    HTTP/1.1 405 Method Not Allowed
    x-oss-request-id: 5CAC0CF8DE01700*****
    x-oss-delete-marker: true
    x-oss-version-id: CAEQMxiBgMCfqaWADliMWI4MGQ0MTVmMjQ3MmE5MDNlMmY4YmFkYTk*****
    Allow: DELETE
    Date: Tue, 09 Apr 2019 03:09:44 GMT
    Content-Type: application/xml
    Content-Length: 318
    Connection: keep-alive
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>MethodNotAllowed</Code>
      <Message>The specified method is not allowed against this resource.</Message>
      <RequestId>5CAC0CF8DE0170*****</RequestId>
      <HostId>versioning-get.oss-cn-hangzhou.aliyunc*****</HostId>
      <Method>GET</Method>
      <ResourceType>DeleteMarker</ResourceType>
    </Error>

SDK

GetObject介面所對應的各語言SDK如下:

錯誤碼

錯誤碼

HTTP狀態代碼

說明

NoSuchKey

404

目標Object不存在。

SymlinkTargetNotExist

404

Object類型為軟連結,且目標Object不存在。

InvalidTargetType

400

Object類型為軟連結,且目標Object類型仍為軟連結。

InvalidObjectState

403

下載歸檔類型的Object時:

  • 沒有提交RestoreObject請求或者上一次提交RestoreObject已經逾時。

  • 已經提交RestoreObject請求,但資料的RestoreObject操作還沒有完成。

Not Modified

304

返回該錯誤的可能原因如下:

  • 指定了If-Modified-Since要求標頭,但請求的Object在指定的時間後沒被修改過。

  • 指定了If-None-Match要求標頭,且請求的Object的ETag值和您提供的ETag相等。

Precondition Failed

412

返回該錯誤的可能原因如下:

  • 指定了If-Unmodified-Since,但指定的時間早於Object實際修改時間 。

  • 指定了If-Match,但請求的Object的ETag值和您提供的ETag值不相等。

Not Found

404

在請求中未指定Object的versionId,且Object的目前的版本是刪除標記(Delete Marker)時,返回該錯誤。

Method Not Allowed

405

在請求中指定了Object的versionId,且versionId對應的是刪除標記時,返回該錯誤。