列出 Blob 儲存體資源

Blob 服務 API 包含在帳戶內列出容器的作業, (列出容器 作業) ,以及 容器內的 Blob (列出 Blob 作業) 。 這些作業有一些值得注意的常用功能。

清單作業會傳回包含所有或部分要求清單的 XML 回應。 此作業會依字母順序傳回實體。

本主題包含下列子主題:

設定最大結果

使用標記擷取部分清單結果

篩選清單結果

周遊 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,直到出現分隔符號字元為止。 元素的值 BlobPrefixsubstring+分隔符號,其中 子字串 是開始一或多個 Blob 名稱的常見子字串,而 分隔符號 則是 分隔符號 參數的值。

您可以使用 的值 BlobPrefix 進行後續呼叫,以列出開頭為這個前置詞的 Blob。 指定後續要求的 值 BlobPrefix 。 如此一來,您便可以周遊 Blob 的虛擬階層,就像是檔案系統一般。 如需範例,請參閱本主題稍後 的列出具有分隔符號的 Blob

請注意,傳回的每個 BlobPrefix 都會計入最大結果。

也請記住,如果您將分隔符號包含在要求中,則無法列出 Blob 快照集。 如果您指定參數的值 delimiter 並設定 include=snapshots 參數,Blob 服務會傳回 InvalidQueryParameter 錯誤 (HTTP 狀態碼 400 – 不正確的要求) 。

XML 回應格式

此清單輸出是 XML 文件,其格式類似本主題後的程式碼範例中所顯示的格式。

回應本文包含要求 URI 上指定做為回應主體內專案的所有參數值。

元素 DateTimeLast-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.txtmyfolder/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 儲存體服務的版本設定