GetObject
GetObject接口用于獲取某個(gè)文件(Object)。此操作需要對(duì)此Object具有讀權(quán)限。
注意事項(xiàng)
GetObject接口默認(rèn)可通過(guò)HTTP和HTTPS兩種方式訪問(wèn)。如果要設(shè)置僅允許通過(guò)HTTPS方式訪問(wèn),請(qǐng)使用Bucket Policy的授權(quán)訪問(wèn)方式。具體操作,請(qǐng)參見(jiàn)通過(guò)Bucket Policy授權(quán)用戶(hù)訪問(wèn)指定資源。
如果Object類(lèi)型為歸檔類(lèi)型,需要先完成解凍文件(RestoreObject)請(qǐng)求或?yàn)?span id="z68uejxpaoma" class="help-letter-space">Object所在Bucket開(kāi)啟歸檔直讀。
版本控制
默認(rèn)情況下,調(diào)用GetObject接口僅返回Object的當(dāng)前版本。
如果在查詢(xún)參數(shù)中指定Object的versionId,則返回指定的Object版本。當(dāng)versionId指定為null時(shí),則返回versionId為null的Object版本。
請(qǐng)求語(yǔ)法
GET /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
Range: bytes=ByteRange(可選)
關(guān)于公共請(qǐng)求頭Authorization的計(jì)算方法,請(qǐng)參見(jiàn)Authorization字段計(jì)算的方法。
當(dāng)您在OSS ON云盒中調(diào)用該接口時(shí),您需要將Host替換為云盒Endpoint。更多信息,請(qǐng)參見(jiàn)云盒Endpoint。
下載OSS中的大文件(超過(guò)100 MB)時(shí),如果傳輸過(guò)程中受到網(wǎng)絡(luò)環(huán)境影響,則會(huì)傳輸失敗。您可以通過(guò)HTTP Range請(qǐng)求獲取大文件的部分內(nèi)容。關(guān)于通過(guò)HTTP Range請(qǐng)求分段獲取OSS資源的更多示例,請(qǐng)參見(jiàn)如何通過(guò)HTTP Range請(qǐng)求分段獲取OSS資源。
請(qǐng)求頭
OSS支持在GET請(qǐng)求中通過(guò)請(qǐng)求頭來(lái)自定義響應(yīng)頭,但只有請(qǐng)求成功(即返回碼為200 OK)才會(huì)將響應(yīng)頭的值設(shè)置成GET請(qǐng)求頭中指定的值。
OSS不支持在匿名訪問(wèn)的GET請(qǐng)求中自定義響應(yīng)頭。
名稱(chēng) | 類(lèi)型 | 是否必選 | 描述 |
response-content-language | 字符串 | 否 | 指定OSS返回請(qǐng)求的content-language頭。 默認(rèn)值:無(wú) |
response-expires | 字符串 | 否 | 指定OSS返回請(qǐng)求的expires頭。 默認(rèn)值:無(wú) |
response-cache-control | 字符串 | 否 | 指定OSS返回請(qǐng)求的cache-control頭。 默認(rèn)值:無(wú) |
response-content-disposition | 字符串 | 否 | 指定OSS返回請(qǐng)求的content-disposition頭。 默認(rèn)值:無(wú) |
response-content-encoding | 字符串 | 否 | 指定OSS返回請(qǐng)求的content-encoding頭。 默認(rèn)值:無(wú) |
Range | 字符串 | 否 | 指定文件傳輸?shù)姆秶?
默認(rèn)值:無(wú) |
If-Modified-Since | 字符串 | 否 | 如果指定的時(shí)間早于實(shí)際修改時(shí)間或指定的時(shí)間不符合規(guī)范,則直接返回Object,并返回200 OK;如果指定的時(shí)間等于或者晚于實(shí)際修改時(shí)間,則返回304 Not Modified。 時(shí)間格式:GMT,例如 默認(rèn)值:無(wú) |
If-Unmodified-Since | 字符串 | 否 | 如果指定的時(shí)間等于或者晚于Object實(shí)際修改時(shí)間,則正常傳輸Object,并返回200 OK;如果指定的時(shí)間早于實(shí)際修改時(shí)間,則返回412 Precondition Failed。 時(shí)間格式:GMT,例如 If-Modified-Since和If-Unmodified-Since可以同時(shí)使用。 默認(rèn)值:無(wú) |
If-Match | 字符串 | 否 | 如果傳入的ETag和Object的ETag匹配,則正常傳輸Object,并返回200 OK;如果傳入的ETag和Object的ETag不匹配,則返回412 Precondition Failed。 Object的ETag值用于驗(yàn)證數(shù)據(jù)是否發(fā)生了更改,您可以基于ETag值驗(yàn)證數(shù)據(jù)完整性。 默認(rèn)值:無(wú) |
If-None-Match | 字符串 | 否 | 如果傳入的ETag值和Object的ETag不匹配,則正常傳輸Object,并返回200 OK;如果傳入的ETag和Object的ETag匹配,則返回304 Not Modified。 If-Match和If-None-Match可以同時(shí)使用。 默認(rèn)值:無(wú) |
Accept-Encoding | 字符串 | 否 | 指定客戶(hù)端的編碼類(lèi)型。 如果要對(duì)返回內(nèi)容進(jìn)行Gzip壓縮傳輸,您需要在請(qǐng)求頭中以顯示方式加入Accept-Encoding:gzip。 OSS會(huì)根據(jù)Object的Content-Type和Object大小(不小于1KB),判斷傳輸過(guò)程中是否對(duì)數(shù)據(jù)進(jìn)行Gzip壓縮。滿足條件時(shí),數(shù)據(jù)以壓縮形式傳輸,否則,數(shù)據(jù)以原始形式傳輸。 說(shuō)明
默認(rèn)值:無(wú) |
響應(yīng)頭
如果Object類(lèi)型為軟鏈接,則返回目標(biāo)Object的內(nèi)容。響應(yīng)頭中Content-Length
、ETag
、Content-Md5
為目標(biāo)Object的元數(shù)據(jù);Last-Modified
取目標(biāo)Object和軟鏈接對(duì)應(yīng)的最大值(即在兩者中取更新較晚的時(shí)間);其他均為軟鏈接的元數(shù)據(jù)。
名稱(chēng) | 類(lèi)型 | 描述 |
x-oss-server-side-encryption | 字符串 | 若Object在服務(wù)器端采用熵編碼加密存儲(chǔ),使用GET請(qǐng)求時(shí),系統(tǒng)會(huì)自動(dòng)解密返回給用戶(hù),并且在響應(yīng)頭中返回x-oss-server-side-encryption,表明該Object的服務(wù)器端加密算法。 |
x-oss-tagging-count | 字符串 | 對(duì)象關(guān)聯(lián)的標(biāo)簽的個(gè)數(shù)。僅當(dāng)有讀取標(biāo)簽權(quán)限時(shí)返回。 |
x-oss-expiration | 字符串 | 配置了生命周期規(guī)則的Bucket中Object的過(guò)期時(shí)間。
|
示例
簡(jiǎn)單的GET請(qǐng)求
請(qǐng)求示例
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****************
返回示例
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]
帶有Range參數(shù)
請(qǐng)求示例
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]
帶自定義返回消息頭
請(qǐng)求示例
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類(lèi)型為軟鏈接
請(qǐng)求示例
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操作已完成
請(qǐng)求示例
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訪問(wèn)指定版本Object
請(qǐng)求示例
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的當(dāng)前版本為刪除標(biāo)記
請(qǐng)求示例
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訪問(wèn)刪除標(biāo)記
請(qǐng)求示例
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接口所對(duì)應(yīng)的各語(yǔ)言SDK如下:
錯(cuò)誤碼
錯(cuò)誤碼 | HTTP狀態(tài)碼 | 說(shuō)明 |
NoSuchKey | 404 | 目標(biāo)Object不存在。 |
SymlinkTargetNotExist | 404 | Object類(lèi)型為軟鏈接,且目標(biāo)Object不存在。 |
InvalidTargetType | 400 | Object類(lèi)型為軟鏈接,且目標(biāo)Object類(lèi)型仍為軟鏈接。 |
InvalidObjectState | 403 | 下載歸檔類(lèi)型的Object時(shí):
|
Not Modified | 304 | 返回該錯(cuò)誤的可能原因如下:
|
Precondition Failed | 412 | 返回該錯(cuò)誤的可能原因如下:
|
Not Found | 404 | 在請(qǐng)求中未指定Object的versionId,且Object的當(dāng)前版本是刪除標(biāo)記(Delete Marker)時(shí),返回該錯(cuò)誤。 |
Method Not Allowed | 405 | 在請(qǐng)求中指定了Object的versionId,且versionId對(duì)應(yīng)的是刪除標(biāo)記時(shí),返回該錯(cuò)誤。 |