列出 Blob 儲存體資源
Blob 服務 API 包含在帳戶內列出容器的作業, (列出容器 作業) ,以及 容器內的 Blob (列出 Blob 作業) 。 這些作業有一些值得注意的常用功能。
清單作業會傳回包含所有或部分要求清單的 XML 回應。 此作業會依字母順序傳回實體。
本主題包含下列子主題:
設定最大結果
若要指定要在清單作業的單一呼叫中傳回的結果數目上限,請在要求 URI 上指定 參數的值 maxresults
。
如果未在要求中指定結果數目上限,或大於 5,000,則伺服器最多會傳回 5,000 個專案。 如果您指定的結果數目上限小於或等於零,服務會傳回狀態碼 400 (不正確的要求) 。
使用標記擷取部分清單結果
第一次針對特定資源執行清單作業時,回應可能會包含所有結果,或可能包含結果的子集和標記值。 標記值可以傳遞至後續呼叫,以傳回下一組結果 (,然後下一個) 直到清單完成且未傳回標記為止。
標記值會包含在 XML 回應的 NextMarker
項目中。 當 NextMarker
項目為空白時,即完成清單。 的值 NextMarker
是用戶端不透明的字串值。
若要傳回後續作業的下一組結果,請將 NextMarker
標記中所傳回的值,當做要求 URI 中的 marker
參數傳遞。
篩選清單結果
您可以在要求中使用 prefix
參數指定前置詞字串,以篩選結果清單。 此清單作業接著會傳回名稱開頭為此前置詞的實體。 如果在要求 URI 中指定 prefix
參數,回應 XML 會包含 Prefix
項目,其中含有一個或多個前置詞字元。 例如,在回應 XML 內指定值為 「c」 <Prefix>``c``</Prefix>
的前置詞。 如需範例,請參閱本主題稍後的 列出容器 一節。
周遊 Blob 命名空間
清單 Blob作業具有額外的 delimiter
參數,可讓呼叫端使用使用者設定的分隔符號來周遊 Blob 命名空間。 此分隔符號可以是單一字元或字串。 當要求包含此參數時,作業會傳回 BlobPrefix
項目。 傳回的 BlobPrefix
項目會取代所有名稱開頭為相同子字串的 Blob,直到出現分隔符號字元為止。 元素的值 BlobPrefix
是 substring+分隔符號,其中 子字串 是開始一或多個 Blob 名稱的常見子字串,而 分隔符號 則是 分隔符號 參數的值。
您可以使用 的值 BlobPrefix
進行後續呼叫,以列出開頭為這個前置詞的 Blob。 指定後續要求的 值 BlobPrefix
。 如此一來,您便可以周遊 Blob 的虛擬階層,就像是檔案系統一般。 如需範例,請參閱本主題稍後 的列出具有分隔符號的 Blob 。
請注意,傳回的每個 BlobPrefix
都會計入最大結果。
也請記住,如果您將分隔符號包含在要求中,則無法列出 Blob 快照集。 如果您指定參數的值 delimiter
並設定 include=snapshots
參數,Blob 服務會傳回 InvalidQueryParameter 錯誤 (HTTP 狀態碼 400 – 不正確的要求) 。
XML 回應格式
此清單輸出是 XML 文件,其格式類似本主題後的程式碼範例中所顯示的格式。
回應本文包含要求 URI 上指定做為回應主體內專案的所有參數值。
元素 DateTime
中 Last-Modified
傳回的值是 RFC 1123 格式。 如需值的詳細資訊 DateTime
,請參閱 標頭中的日期/時間值的表示。
列出容器
此範例顯示傳回兩個容器的清單作業結果。 要求 URI 如下:
GET https://myaccount.blob.core.windows.net/?comp=list&prefix=c&maxresults=3&include=metadata
已指定前置詞 「c」 來篩選清單。 所要傳回的最大結果數目已設為 3。 標記 NextMarker
會顯示將在後續清單作業上傳回的容器名稱。
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults AccountName="https://myaccount.blob.core.windows.net/">
<Prefix>c</Prefix>
<MaxResults>3</MaxResults>
<Containers>
<Container>
<Name>container1</Name>
<Url>https://myaccount.blob.core.windows.net/container1</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 18:09:03 GMT</Last-Modified>
<Etag>0x8CAE7D0C4AF4487</Etag>
</Properties>
<Metadata>
<Color>orange</Color>
<ContainerNumber>01</ContainerNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Container>
<Container>
<Name>container2</Name>
<Url>https://myaccount.blob.core.windows.net/container2</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>
<Etag>0x8CAE7CAD8C24928</Etag>
</Properties>
<Metadata>
<Color>pink</Color>
<ContainerNumber>02</ContainerNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Container>
<Container>
<Name>container3</Name>
<Url>https://myaccount.blob.core.windows.net/container3</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>
<Etag>0x8CAE7CAD8EAC0BB</Etag>
</Properties>
<Metadata>
<Color>brown</Color>
<ContainerNumber>03</ContainerNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Container>
</Containers>
<NextMarker>container4</NextMarker>
</EnumerationResults>
列出 Blob 和快照集
此範例顯示清單作業的結果,此作業會在名為 mycontainer的容器中傳回 Blob 和快照集。 要求 URI 如下:
GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata
回應包含 Blob 和快照集:
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">
<Blobs>
<Blob>
<Name>blob1.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>
<Properties>
<Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>
<Etag>0x8CBFF45D8A29A19</Etag>
<Content-Length>100</Content-Length>
<Content-Type>text/html</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
<Metadata>
<Color>blue</Color>
<BlobNumber>01</BlobNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Blob>
<Blob>
<Name>blob2.txt</Name>
<Snapshot>2009-09-09T09:20:03.0427659Z</Snapshot>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.0427659Z</Url>
<Properties>
<Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>
<Etag>0x8CBFF45D8B4C212</Etag>
<Content-Length>5000</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding>gzip</Content-Encoding>
<Content-Language />
<Content-MD5 />
<Cache-Control />
<BlobType>BlockBlob</BlobType>
</Properties>
<Metadata>
<Color>green</Color>
<BlobNumber>02</BlobNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
<x-ms-invalid-name>nasdf$@#$$</x-ms-invalid-name>
</Metadata>
</Blob>
<Blob>
<Name>blob2.txt</Name>
<Snapshot>2009-09-09T09:20:03.1587543Z</Snapshot>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.1587543Z</Url>
<Properties>
<Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>
<Etag>0x8CBFF45D8B4C212</Etag>
<Content-Length>5000</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding>gzip</Content-Encoding>
<Content-Language />
<Content-MD5 />
<Cache-Control />
<BlobType>BlockBlob</BlobType>
</Properties>
<Metadata>
<Color>green</Color>
<BlobNumber>02</BlobNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Blob>
<Blob>
<Name>blob2.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>
<Properties>
<Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>
<Etag>0x8CBFF45D8B4C212</Etag>
<Content-Length>5000</Content-Length>
<Content-Type>application/octet-stream</Content-Type>
<Content-Encoding>gzip</Content-Encoding>
<Content-Language />
<Content-MD5 />
<Cache-Control />
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
<Metadata>
<Color>green</Color>
<BlobNumber>02</BlobNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Blob>
<Blob>
<Name>blob3.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob3.txt</Url>
<Properties>
<Last-Modified>Wed, 09 Sep 2009 09:20:03 GMT</Last-Modified>
<Etag>0x8CBFF45D911FADF</Etag>
<Content-Length>16384</Content-Length>
<Content-Type>image/jpeg</Content-Type>
<Content-Encoding />
<Content-Language />
<Content-MD5 />
<Cache-Control />
<x-ms-blob-sequence-number>3</x-ms-blob-sequence-number>
<BlobType>PageBlob</BlobType>
<LeaseStatus>locked</LeaseStatus>
</Properties>
<Metadata>
<Color>yellow</Color>
<BlobNumber>03</BlobNumber>
<SomeMetadataName>SomeMetadataValue</SomeMetadataName>
</Metadata>
</Blob>
</Blobs>
<NextMarker />
</EnumerationResults>
列出具有分隔符號的 Blob
此範例顯示清單作業的結果,此作業會在名為 mycontainer的容器下方傳回 Blob。 要求 URI 如下:
GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4
在此情況下,參數 delimiter
會指定為 /
。 回應本文包含 BlobPrefix
標記,代表以相同子字串開頭的 Blob 群組,包括分隔符號。
容器下的範例 Blob 如下所示。 第一個清單作業會傳回前四個,因為 MaxResults
設定為 4。 請注意, myfolder/blobA.txt 和 myfolder/blobB.txt 會群組在標記中的 BlobPrefix
回應本文中,並計算為傳回實體數目的單一 Blob。 若要傳回以這個前置詞開頭的 Blob,請提出後續要求,其中前置詞參數設定為 myfolder/。
blob1.txt
blob2.txt
myfolder/blobA.txt
myfolder/blobB.txt
newblob1.txt
newblob2.txt
要傳回的下一個 Blob newblob2.txt。 Blob 名稱是在 標記中 NextMarker
提供。
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">
<MaxResults>4</MaxResults>
<Blobs>
<Blob>
<Name>blob1.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 18:41:57 GMT</Last-Modified>
<Etag>0x8CAE7D55D050B8B</Etag>
<Content-Length>8</Content-Length>
<Content-Type>text/html</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
<Properties>
</Blob>
<Blob>
<Name>blob2.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 12:18:50 GMT</Last-Modified>
<Etag>0x8CAE7D55CF6C339</Etag>
<Content-Length>100</Content-Length>
<Content-Type>text/html</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
</Blob>
<BlobPrefix>
<Name>myfolder/</Name>
</BlobPrefix>
<Blob>
<Name>newblob1.txt</Name>
<Url>https://myaccount.blob.core.windows.net/mycontainer/newblob1.txt</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 16:31:57 GMT</Last-Modified>
<Etag>0x8CAE7D55CF6C339</Etag>
<Content-Length>25</Content-Length>
<Content-Type>text/html</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
</Blob>
</Blobs>
<NextMarker>newblob2.txt</NextMarker>
</EnumerationResults>
列出根容器中的 Blob
若要列出根容器中的 Blob,您可以使用下列 URL:
https://myaccount.blob.core.windows.net/$root?restype=container&comp=list&maxresults=10
請記住,當您列出根容器中的 Blob 時,XML 回應本文不會在 Blob 欄位中包含根容器的 URL
明確參考。 以下是列出根容器中 Blob 的範例回應:
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/%24root">
<MaxResults>10</MaxResults>
<Blobs>
<Blob>
<Name>rootblob1.txt</Name>
<Url>https://myaccount.blob.core.windows.net/rootblob1.txt</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 18:41:48 GMT</Last-Modified>
<Etag>0x8CAE7D55D050B8B</Etag>
<Content-Length>25</Content-Length>
<Content-Type>text/html</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
</Blob>
<Blob>
<Name>rootblob2.txt</Name>
<Url>https://myaccount.blob.core.windows.net/rootblob2.txt</Url>
<Properties>
<Last-Modified>Sun, 27 Sep 2009 18:45:57 GMT</Last-Modified>
<Etag>0x8CAE7D55CF6C339</Etag>
<Content-Length>14</Content-Length>
<Content-Type>text/plain; charset=UTF-8</Content-Type>
<Content-Encoding />
<Content-Language>en-US</Content-Language>
<Content-MD5 />
<Cache-Control>no-cache</Cache-Control>
<BlobType>BlockBlob</BlobType>
<LeaseStatus>unlocked</LeaseStatus>
</Properties>
</Blob>
</Blobs>
</EnumerationResults>
另請參閱
列出容器
列出 Blob
Blob 服務概念 \(英文\)
Azure 儲存體服務的版本設定