GetBucket (ListObjects)
當(dāng)您需要列舉存儲空間(Bucket)中所有文件(Object)的信息,例如文件名稱、文件大小、文件最后修改時間等,可以調(diào)用GetBucket (ListObjects)接口進行獲取。
注意事項
GetBucket (ListObjects)接口已修訂為GetBucketV2 (ListObjectsV2)。建議您在開發(fā)應(yīng)用程序時使用較新的版本GetBucketV2 (ListObjectsV2)。為保證向后兼容性,OSS繼續(xù)支持GetBucket (ListObjects)。有關(guān)GetBucketV2 (ListObjectsV2)的更多信息,請參見ListObjectsV2(GetBucketV2)。
執(zhí)行GetBucket (ListObjects)請求時不會返回Object中自定義的元數(shù)據(jù)。
GetBucket (ListObjects)是Bucket級別的操作,按照Bucket存儲類型收取Put類請求費用。調(diào)用一次該接口只收取一次Put類請求費用。更多信息,請參見Put類請求。
請求語法
GET / HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
請求頭
此接口僅涉及公共請求頭,例如Authorization
、Host
等。更多信息,請參見公共請求頭(Common Request Headers)。
請求參數(shù)
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
delimiter | 字符串 | 否 | / | 對Object名字進行分組的字符。所有Object名字包含指定的前綴,第一次出現(xiàn)delimiter字符之間的Object作為一組元素(即CommonPrefixes)。 默認(rèn)值:無 |
marker | 字符串 | 否 | test1.txt | 設(shè)定從marker之后按字母排序開始返回Object。 marker用來實現(xiàn)分頁顯示效果,參數(shù)的長度必須小于1024字節(jié)。 做條件查詢時,即使marker在列表中不存在,也會從符合marker字母排序的下一個開始打印。 默認(rèn)值:無 |
max-keys | 字符串 | 否 | 200 | 指定返回Object的最大數(shù)。 如果因為max-keys的設(shè)定無法一次完成列舉,返回結(jié)果會附加NextMarker元素作為下一次列舉的marker。 取值:大于0小于等于1000 默認(rèn)值:100 |
prefix | 字符串 | 否 | fun | 限定返回文件的Key必須以prefix作為前綴。
如果把prefix設(shè)為某個文件夾名,則列舉以此prefix開頭的文件,即該文件夾下遞歸的所有文件和子文件夾。 在設(shè)置prefix的基礎(chǔ)上,將delimiter設(shè)置為正斜線(/)時,返回值中只列舉該文件夾下的文件,文件夾下的子文件夾名返回在CommonPrefixes中,子文件夾下遞歸的所有文件和文件夾不顯示。 例如,一個Bucket中有三個Object,分別為fun/test.jpg、 fun/movie/001.avi和fun/movie/007.avi。如果設(shè)定prefix為fun/,則返回三個Object;如果在prefix設(shè)置為fun/的基礎(chǔ)上,將delimiter設(shè)置為正斜線(/),則返回fun/test.jpg和fun/movie/。 默認(rèn)值:無 |
encoding-type | 字符串 | 否 | URL | 對返回的內(nèi)容進行編碼并指定編碼的類型。 默認(rèn)值:無 可選值:URL 重要 delimiter、marker、prefix、NextMarker以及Key使用UTF-8字符。如果delimiter、marker、prefix、NextMarker以及Key中包含XML 1.0標(biāo)準(zhǔn)不支持的控制字符,您可以通過指定encoding-type對返回結(jié)果中的Delimiter、Marker、Prefix、NextMarker以及Key進行編碼。 |
響應(yīng)元素
名稱 | 類型 | 示例值 | 描述 |
ListBucketResult | 容器 | 不涉及 | 保存GetBucket請求結(jié)果的容器。 子節(jié)點:Name、Prefix、 Marker、MaxKeys、 Delimiter、IsTruncated、Nextmarker、Contents 父節(jié)點:None |
Name | 字符串 | oss-example | Bucket名稱。 父節(jié)點:ListBucketResult |
Prefix | 字符串 | fun/ | 本次查詢結(jié)果的前綴。 父節(jié)點:ListBucketResult或者CommonPrefixes |
Marker | 字符串 | test1.txt | 標(biāo)識此次GetBucket(ListObjects)的起點。 父節(jié)點:ListBucketResult |
MaxKeys | 字符串 | 100 | 響應(yīng)請求內(nèi)返回結(jié)果的最大數(shù)目。 父節(jié)點:ListBucketResult |
Delimiter | 字符串 | / | 對Object名字進行分組的字符。所有名字包含指定的前綴且第一次出現(xiàn)Delimiter字符之間的Object作為一組元素CommonPrefixes。 父節(jié)點:ListBucketResult |
EncodingType | 字符串 | url | 指明了返回結(jié)果中編碼使用的類型。如果請求的參數(shù)中指定了encoding-type,則會對返回結(jié)果中的Delimiter、Marker、Prefix、NextMarker和Key這些元素進行編碼。 父節(jié)點:ListBucketResult |
IsTruncated | 枚舉字符串 | false | 請求中返回的結(jié)果是否被截斷。 返回值:true、false
父節(jié)點:ListBucketResult |
NextMarker | 字符串 | test100.txt | 下一次列舉文件的起點。 父節(jié)點:ListBucketResult |
Contents | 容器 | 不涉及 | 保存每個返回Object元數(shù)據(jù)的容器。 父節(jié)點:ListBucketResult |
Key | 字符串 | fun/test.jpg | Object的Key。 父節(jié)點:ListBucketResult.Contents |
TransitionTime | 時間 | 2024-04-23T07:21:42.000Z | Object通過生命周期規(guī)則轉(zhuǎn)儲為冷歸檔或者深度冷歸檔存儲類型的時間。 說明
父節(jié)點:ListBucketResult.Contents |
LastModified | 時間 | 2012-02-24T08:42:32.000Z | Object最后被修改的時間。 說明
父節(jié)點:ListBucketResult.Contents |
ETag | 字符串 | 5B3C1A2E053D763E1B002CC607C5A0FE1**** | ETag(Entity Tag)在每個Object生成時創(chuàng)建,用于標(biāo)識一個Object的內(nèi)容。
父節(jié)點:ListBucketResult.Contents |
Type | 字符串 | Normal | Object類型,分為以下三種:
|
Size | 字符串 | 344606 | 返回Object大小,單位為字節(jié)。 父節(jié)點:ListBucketResult.Contents |
StorageClass | 字符串 | Standard | Object的存儲類型。 父節(jié)點:ListBucketResult.Contents |
RestoreInfo | 字符串 | ongoing-request="true” | Object的解凍狀態(tài)。
|
Owner | 容器 | 不涉及 | 保存Bucket擁有者信息的容器。 子節(jié)點:DisplayName、ID 父節(jié)點:Contents |
ID | 字符串 | 0022012**** | Bucket擁有者的用戶ID。 父節(jié)點:ListBucketResult.Contents.Owner |
DisplayName | 字符串 | user_example | Object擁有者名稱。 父節(jié)點:ListBucketResult.Contents.Owner |
CommonPrefixes | 容器 | 不涉及 | 如果請求中指定了Delimiter參數(shù),則會在返回的響應(yīng)中包含CommonPrefixes元素。該元素表明以Delimiter結(jié)尾,并有共同前綴的Object名稱的集合。 父節(jié)點:ListBucketResult |
此接口涉及的其他公共響應(yīng)頭,例如x-oss-request-id
、Content-Type
等的更多信息,請參見公共響應(yīng)頭(Common Response Headers)。
示例
簡單請求示例
GET / HTTP/1.1 Host: examplebucket.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 08:43:27 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 534B371674E88A4D8906**** Date: Fri, 24 Feb 2012 08:43:27 GMT Content-Type: application/xml Content-Length: 1866 Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>examplebucket</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>100</MaxKeys> <Delimiter></Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>fun/movie/001.avi</Key> <TransitionTime>2024-04-23T07:21:42.000Z</TransitionTime> <LastModified>2012-02-24T08:43:07.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> <Contents> <Key>fun/movie/007.avi</Key> <LastModified>2012-02-24T08:43:27.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> <Contents> <Key>fun/test.jpg</Key> <LastModified>2012-02-24T08:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> <Contents> <Key>oss.jpg</Key> <LastModified>2012-02-24T06:07:48.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> </ListBucketResult>
帶prefix參數(shù)的請求示例
GET /?prefix=fun HTTP/1.1 Host: examplebucket.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 08:43:27 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 534B371674E88A4D8906**** Date: Fri, 24 Feb 2012 08:43:27 GMT Content-Type: application/xml Content-Length: 1464 Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>examplebucket</Name> <Prefix>fun</Prefix> <Marker></Marker> <MaxKeys>100</MaxKeys> <Delimiter></Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>fun/movie/001.avi</Key> <LastModified>2012-02-24T08:43:07.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user_example</DisplayName> </Owner> </Contents> <Contents> <Key>fun/movie/007.avi</Key> <LastModified>2012-02-24T08:43:27.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user_example</DisplayName> </Owner> </Contents> <Contents> <Key>fun/test.jpg</Key> <LastModified>2012-02-24T08:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user_example</DisplayName> </Owner> </Contents> </ListBucketResult>
帶prefix和delimiter參數(shù)的請求示例
GET /?prefix=fun/&delimiter=/ HTTP/1.1 Host: examplebucket.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 08:43:27 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 534B371674E88A4D8906**** Date: Fri, 24 Feb 2012 08:43:27 GMT Content-Type: application/xml Content-Length: 712 Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>examplebucket</Name> <Prefix>fun/</Prefix> <Marker></Marker> <MaxKeys>100</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>fun/test.jpg</Key> <LastModified>2012-02-24T08:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user_example</DisplayName> </Owner> </Contents> <CommonPrefixes> <Prefix>fun/movie/</Prefix> </CommonPrefixes> </ListBucketResult>
指定marker分頁列舉的請求示例
此示例中指定了max-keys=2,即最多返回2條列舉信息。
GET /?max-keys=2&marker=test1.txt HTTP/1.1 Host: examplebucket.oss-cn-shenzhen.aliyuncs.com Accept-Encoding: identity Accept: */* Connection: keep-alive User-Agent: aliyun-sdk-python/2.11.0(Darwin/18.2.0/x86_64;3.4.1) date: Tue, 26 May 2020 08:39:48 GMT authorization: OSS qn6q**************:77Dv****************
返回示例
結(jié)果中的NextMarker可以作為下次列舉請求的Marker。
HTTP/1.1 200 OK Server: AliyunOSS Date: Tue, 26 May 2020 08:39:48 GMT Content-Type: application/xml Content-Length: 1032 Connection: keep-alive x-oss-request-id: 5ECCD5D4881816373582xxx x-oss-server-time: 3 <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult> <Name>examplebucket</Name> <Prefix></Prefix> <Marker>test1.txt</Marker> <MaxKeys>2</MaxKeys> <Delimiter></Delimiter> <EncodingType>url</EncodingType> <IsTruncated>true</IsTruncated> <NextMarker>test100.txt</NextMarker> <Contents> <Key>test10.txt</Key> <LastModified>2020-05-26T07:50:18.000Z</LastModified> <ETag>"C4CA4238A0B923820DCC509A6F75****"</ETag> <Type>Normal</Type> <Size>1</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>1305433xxx</ID> <DisplayName>1305433xxx</DisplayName> </Owner> </Contents> <Contents> <Key>test100.txt</Key> <LastModified>2020-05-26T07:50:20.000Z</LastModified> <ETag>"C4CA4238A0B923820DCC509A6F75****"</ETag> <Type>Normal</Type> <Size>1</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>1305433xxx</ID> <DisplayName>1305433xxx</DisplayName> </Owner> </Contents> </ListBucketResult>
請求的Bucket包含歸檔或冷歸檔類型文件
假設(shè)examplebucket中包含文件exampleobject1.txt、exampleobject2.txt和exampleobject3.txt,其存儲類型均為冷歸檔存儲類型(ColdArchive)。這三個文件所處的狀態(tài)說明如下:
exampleobject1.txt未提交RestoreObject請求或者RestoreObject請求已過期。
exampleobject2.txt已提交RestoreObject請求,但解凍操作未完成。
exampleobject3.txt已提交RestoreObject請求,并且解凍操作已完成。
請求示例
GET / HTTP/1.1 Host: examplebucket.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 08:43:27 GMT Authorization: OSS qn6q**************:77Dv****************
返回示例
HTTP/1.1 200 OK x-oss-request-id: 534B371674E88A4D8906**** Date: Date: Fri, 24 Feb 2012 08:43:27 GMT Content-Type: application/xml Content-Length: 1866 Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Name>examplebucket</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys></MaxKeys> <Delimiter></Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>exampleobject1.txt</Key> <LastModified>2020-06-22T11:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>ColdArchive</StorageClass> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> <Contents> <Key>exampleobject2.txt</Key> <LastModified>2020-06-22T11:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <RestoreInfo>ongoing-request="true"</RestoreInfo> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> <Contents> <Key>exampleobject3.txt</Key> <LastModified>2020-06-22T11:42:32.000Z</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE1****"</ETag> <Type>Normal</Type> <Size>344606</Size> <StorageClass>Standard</StorageClass> <RestoreInfo>ongoing-request="false", expiry-date="Thu, 24 Sep 2020 12:40:33 GMT"</RestoreInfo> <Owner> <ID>0022012****</ID> <DisplayName>user-example</DisplayName> </Owner> </Contents> </ListBucketResult>
SDK
此接口所對應(yīng)的各語言SDK如下:
錯誤碼
錯誤碼 | HTTP狀態(tài)碼 | 描述 |
NoSuchBucket | 404 | 請求的目標(biāo)Bucket不存在。請檢查請求的Bucket名稱是否符合規(guī)范。 |
AccessDenied | 403 | 沒有訪問該Bucket的權(quán)限。只有Bucket擁有者以及被授予 |
InvalidArgument | 400 |
|