Lista zasobów pamięci masowej Blob

API usługi Blob zawiera operacje polegające na wymienianiu kontenerów w koncie (operacja List Containers ) oraz blobów w kontenerze (operacja List Blobs ). Te operacje mają pewne wspólne cechy, które warto zauważyć.

Operacja listingu zwraca odpowiedź zawierającą całość lub część żądanej listy. Operacja zwraca jednostki w porządku alfabetycznym.

Ten temat obejmuje następujące podtematy:

Ustaw maksymalne wyniki

Uzyskanie częściowych wyników listy za pomocą markerów

Wyniki listy filtrów

Przejdź przez przestrzeń nazw blob

Format odpowiedzi XML

Format odpowiedzi Apache Arrow

Ustaw maksymalne wyniki

Aby określić maksymalną liczbę wyników zwracanych w jednym wywołaniu operacji listingu, należy określić wartość parametru maxresults w URI żądania.

Jeśli maksymalna liczba wyników nie jest określona w żądaniu lub przekracza 5 000, serwer zwraca maksymalnie 5 000 pozycji. Jeśli podasz maksymalną liczbę wyników mniejszą lub równą zero, usługa zwraca kod statusu 400 (Złe żądanie).

Uzyskanie częściowych wyników listy za pomocą markerów

Za pierwszym razem, gdy operacja listingu jest wykonywana na konkretnym zasobie, odpowiedź może zawierać wszystkie wyniki lub podzbiór wyników oraz wartość markera. Wartość markera może być przekazywana do kolejnego wywołania, aby zwrócić kolejny zestaw wyników (a następnie następny), aż lista jest kompletna i marker nie zostanie zwrócony.

Wartość markera zwraca się jako .NextMarker W odpowiedzi XML jest NextMarker elementem w ciele odpowiedzi. W odpowiedzi NextMarkerApache Arrow List Blobs jest polem w metadanych schematu. Gdy NextMarker jest pusta, lista jest kompletna. Wartość jest NextMarker wartością ciągu ciągów nieprzezroczystych dla klienta.

Aby zwrócić kolejny zestaw wyników w kolejnej operacji, należy przekazać wartość zwróconą jako NextMarkermarker parametr w URI żądania.

Wyniki listy filtrów

Listę wyników można filtrować, określając na żądaniu ciąg prefiksu za pomocą parametru prefix . Operacja lista zwraca wtedy jednostki, których nazwy zaczynają się od tego prefiksu. Jeśli prefix parametr jest określony w URI żądania, XML odpowiedzi zawiera Prefix element zawierający znak lub znaki prefiksowe. Na przykład określenie prefiksu z wartością "c" zwraca <Prefix>``c``</Prefix> się w XML odpowiedzi. Dla przykładu, zobacz później w sekcji Pojemniki List .

Przejdź przez przestrzeń nazw blob

Operacja List Blobs posiada dodatkowy delimiter parametr umożliwiający wywoływającemu przemieszczanie się po przestrzeni nazw blob za pomocą konfigurowanego przez użytkownika ogranicznika. Ogranicznik może być pojedynczym znakiem lub ciągiem. Gdy żądanie zawiera ten parametr, operacja zwraca element BlobPrefix. Element ten BlobPrefix jest zwracany zamiast wszystkich blobów o nazwach zaczynających się od tego samego podciągu aż do pojawienia się znaku oddzielacza. Wartość elementu BlobPrefix to podciąg+ogranicznik, gdzie podciąg to wspólny podciąg rozpoczynający jedną lub więcej nazw blobów, a ogranicznik to wartość parametru ogranicznika .

Możesz użyć wartości BlobPrefix, aby wykonać kolejne wywołanie, aby wyświetlić listę obiektów blob rozpoczynających się od tego prefiksu. Określ wartość dla BlobPrefix kolejnych żądań. W ten sposób można przejść przez wirtualną hierarchię obiektów blob tak, jakby był to system plików. Dla przykładu, zobacz Lista blobów z ogranicznikiem później w tym temacie.

Należy zauważyć, że każda zwrócona BlobPrefix wartość liczy się do maksymalnego wyniku.

Pamiętaj też, że nie możesz wymienić migawek blobów, jeśli dołączysz do żądania ogranicznik. Jeśli określisz wartość parametru delimiter i jednocześnie ustawisz parametr, include=snapshots usługa Blob zwraca błąd InvalidQueryParameter (kod statusu HTTP 400 – Bad Request).

Format odpowiedzi XML

Wyjściem listy jest dokument XML o formacie podobnym do tych pokazanych w przykładach kodu później w tym temacie.

Ciało odpowiedzi zawiera wartości wszystkich parametrów określonych w URI żądania jako elementy w ciele odpowiedzi.

Wartość DateTime zwracana w elemencie Last-Modified jest w formacie RFC 1123. Więcej informacji o DateTime wartościach można znaleźć w artykule Reprezentacja wartości dat/godziny w nagłówkach.

Lista kontenerów

Ten przykład pokazuje wynik operacji listingu, która zwraca dwa kontenery. URI żądania jest następujące:

GET https://myaccount.blob.core.windows.net/?comp=list&prefix=c&maxresults=3&include=metadata  

Do filtrowania listy określono prefiks "c". Maksymalna liczba wyników do uzyskania została ustawiona na 3. Tag NextMarker pokazuje nazwę kontenera, który zostanie zwrócony przy kolejnej operacji wystawiania.

<?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>  

Wymień bloby i migawki

Ten przykład pokazuje wynik operacji listingu, która zwraca bloby i migawki w kontenerze o nazwie mycontainer. URI żądania jest następujące:

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata  

Odpowiedź obejmuje zarówno plamy, jak i migawki:

<?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>  

Lista bloby z ogranicznikiem

Ten przykład pokazuje wynik operacji listingu, która zwraca bloby pod kontenerem o nazwie mycontainer. URI żądania jest następujące:

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4  

W tym przypadku parametr jest delimiter określony jako /. Ciało odpowiedzi zawiera tag BlobPrefix , który reprezentuje grupę blobów zaczynających się od tego samego podciągu, włącznie z separatorem.

Przykładowe grudki pod pojemnikiem są następujące. Pierwsze cztery są zwracane w pierwszej operacji listowania, ponieważ MaxResults jest ustawiona na 4. Należy zauważyć, że myfolder/blobA.txt i myfolder/blobB.txt są grupowane razem w ciele odpowiedzi w tagu BlobPrefix i liczą się jako jedna tablica pod względem liczby zwróconych entycji. Aby zwrócić bloby zaczynające się od tego prefiksu, wykonaj kolejne żądanie, w którym parametr prefiksu jest ustawiony na myfolder/.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

Następna plama, którą należy zwrócić, to newblob2.txt. Nazwa blob jest podana w tagu 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>  

Lista blobów w pojemniku root

Aby wypisać bloby w kontenerze głównym, możesz użyć następującego adresu URL:

https://myaccount.blob.core.windows.net/$root?restype=container&comp=list&maxresults=10  

Pamiętaj, że gdy wypisujesz bloby w głównym kontenerze, ciało odpowiedzi XML nie zawiera wyraźnego odniesienia do tego kontenera w polu bloba URL . Oto przykładowa odpowiedź, która zawiera listę powiązań w kontenerze głównym:

  
<?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>  
  

Format odpowiedzi Apache Arrow

Począwszy od wersji 2026-06-06, operacja List Blobs może również zwracać wyniki w formacie Apache Arrow . Operacja List Containers obecnie nie obsługuje Apache Arrow.

Note

Wsparcie dla List Blobs w Apache Arrow jest obecnie dostępne w wersji publicznej.

Wyjściem listy jest binarny strumień Apache Arrow. Każdy przykład w tym temacie przedstawia partię rekordów jako tabelę, w której każdy wiersz jest blobem lub prefiksem blob, a każda kolumna polem. Pola znaczników czasu, takie jak Last-Modified, są tutaj pokazane w formacie ISO 8601. Każda tabela jest poprzedzona wartościami NumberOfRecords i NextMarker z metadanych schematu.

Lista blobów i migawek w formacie Apache Arrow

Ten przykład pokazuje wynik operacji listingu, która zwraca bloby i migawki w kontenerze o nazwie mycontainer. URI żądania jest następujące:

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata

Odpowiedź obejmuje zarówno plamy, jak i migawki:

Name ResourceType Snapshot Last-Modified Etag Content-Length Content-Type Content-Encoding Content-Language Cache-Control x-ms-blob-sequence-number BlobType LeaseStatus Metadata
blob1.txt blob null 2009-09-09T09:20:02Z 0x8CBFF45D8A29A19 100 tekst/html null en-US no-cache null BlockBlob odblokowane {Color: blue, BlobNumber: 01, SomeMetadataName: SomeMetadataValue}
blob2.txt blob 2009-09-09T09:20:03.0427659Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip null null null BlockBlob null {Color: green, BlobNumber: 02, SomeMetadataName: SomeMetadataValue, x-ms-invalid-name: nasdf$@#$$}
blob2.txt blob 2009-09-09T09:20:03.1587543Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip null null null BlockBlob null {Kolor: zielony, BlobNumber: 02, SomeMetadataName: SomeMetadataValue}
blob2.txt blob null 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip null null null BlockBlob odblokowane {Kolor: zielony, BlobNumber: 02, SomeMetadataName: SomeMetadataValue}
blob3.txt blob null 2009-09-09T09:20:03Z 0x8CBFF45D911FADF 16384 image/jpeg null null null 3 PageBlob zablokowany {Kolor: żółty, BlobNumber: 03, SomeMetadataName: SomeMetadataValue}

Metadane schematu zawierają NumberOfRecords = 5 i = NextMarker puste, co oznacza, że lista jest kompletna.

Lista tablic z ogranicznikiem w formacie Apache Arrow

Ten przykład pokazuje wynik operacji listingu, która zwraca bloby pod kontenerem o nazwie mycontainer. URI żądania jest następujące:

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4

W tym przypadku parametr jest delimiter określony jako /. Ciało odpowiedzi zawiera rekord ustawiony ResourceType na , blobprefixktóry reprezentuje grupę lumpów zaczynających się od tego samego podciągu, włącznie z separatorem.

Przykładowe grudki pod pojemnikiem są następujące. Pierwsze cztery są zwracane w pierwszej operacji listowania, ponieważ MaxResults jest ustawiona na 4. Należy zauważyć, że myfolder/blobA.txt i myfolder/blobB.txt są grupowane razem w treści odpowiedzi w rekordzie blobprefix i liczą się jako jeden blob pod względem liczby zwróconych ency. Aby zwrócić bloby zaczynające się od tego prefiksu, wykonaj kolejne żądanie, w którym parametr prefiksu jest ustawiony na myfolder/.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

newblob2.txt będzie kolejnym blobem zwróconym po opaqueString przesłaniu jako marker parametr w kolejnym żądaniu.

Name ResourceType Last-Modified Etag Content-Length Content-Type Content-Language Cache-Control BlobType LeaseStatus
blob1.txt blob 2009-09-27T18:41:57Z 0x8CAE7D55D050B8B 8 tekst/html en-US no-cache BlockBlob odblokowane
blob2.txt blob 2009-09-27T12:18:50Z 0x8CAE7D55CF6C339 100 tekst/html en-US no-cache BlockBlob odblokowane
myfolder/ blobprefiks null null null null null null null null
newblob1.txt blob 2009-09-27T16:31:57Z 0x8CAE7D55CF6C339 25 tekst/html en-US no-cache BlockBlob odblokowane

Metadane schematu zawierają NumberOfRecords = 4 i .NextMarker = opaqueString

Zobacz także

Lista kontenerów
Lista blobów
Koncepcje usług blob
Wersjonowanie dla usług Azure Storage