Wyświetlanie listy zasobów usługi Blob Storage

Interfejs API usługi Blob Service obejmuje operacje wyświetlania listy kontenerów na koncie (operacja List Containers ) i obiektów blob w kontenerze (operacja List Blobs ). Te operacje mają kilka typowych funkcji, które warto zauważyć.

Operacja wyświetlania listy zwraca odpowiedź XML zawierającą całą lub część żądanej listy. Operacja zwraca jednostki w kolejności alfabetycznej.

Ten temat zawiera następujące podtopy:

Ustawianie maksymalnych wyników

Pobieranie wyników listy częściowej ze znacznikami

Filtrowanie wyników listy

Przechodzenie przez przestrzeń nazw obiektów blob

Format odpowiedzi XML

Ustawianie maksymalnych wyników

Aby określić maksymalną liczbę wyników, które mają zostać zwrócone w jednym wywołaniu operacji listy, określ wartość parametru maxresults dla identyfikatora URI żądania.

Jeśli maksymalna liczba wyników nie zostanie określona w żądaniu lub jeśli jest większa niż 5000, serwer zwraca maksymalnie 5000 elementów. Jeśli określisz maksymalną liczbę wyników mniejszych niż lub równe zero, usługa zwróci kod stanu 400 (Nieprawidłowe żądanie).

Pobieranie wyników listy częściowej ze znacznikami

Przy pierwszym wykonaniu operacji wyświetlania listy względem określonego zasobu odpowiedź może zawierać wszystkie wyniki lub może zawierać podzbiór wyników i wartość znacznika. Wartość znacznika można przekazać do kolejnego wywołania, aby zwrócić następny zestaw wyników (a następnie następny), dopóki lista nie zostanie ukończona i nie zostanie zwrócony żaden znacznik.

Wartość znacznika jest uwzględniana w NextMarker elemecie odpowiedzi XML. Gdy NextMarker element jest pusty, lista zostanie ukończona. Wartość jest NextMarker wartością ciągu nieprzezroczystą dla klienta.

Aby zwrócić następny zestaw wyników w kolejnej operacji, przekaż wartość zwróconą w tagu NextMarker jako marker parametr w identyfikatorze URI żądania.

Filtrowanie wyników listy

Listę wyników można filtrować, określając ciąg prefiksu żądania przy użyciu parametru prefix . Następnie operacja listy zwraca jednostki, które mają nazwy rozpoczynające się od tego prefiksu. prefix Jeśli parametr jest określony w identyfikatorze URI żądania, kod XML odpowiedzi zawiera Prefix element zawierający znak prefiksu lub znaki. Na przykład określenie prefiksu z wartością "c" zwraca <Prefix>``c``</Prefix> wartość w formacie XML odpowiedzi. Aby zapoznać się z przykładem, zobacz sekcję Wyświetlanie listy kontenerów w dalszej części tego tematu.

Przechodzenie przez przestrzeń nazw obiektów blob

Operacja List Blobs ma dodatkowy delimiter parametr, który umożliwia obiektowi wywołującego przechodzenie przez przestrzeń nazw obiektów blob przy użyciu ogranicznika skonfigurowanego przez użytkownika. Ogranicznik może być pojedynczym znakiem lub ciągiem. Gdy żądanie zawiera ten parametr, operacja zwraca BlobPrefix element. Element BlobPrefix jest zwracany zamiast wszystkich obiektów blob o nazwach rozpoczynających się od tego samego podciągu do wyglądu znaku ogranicznika. Wartość BlobPrefix elementu to podciąg+ogranicznik, gdzie podciąg jest typowym podciągem rozpoczynającym się co najmniej jedną nazwę obiektu blob, a ogranicznik jest wartością parametru ogranicznika .

Możesz użyć wartości , BlobPrefix aby utworzyć kolejne wywołanie, aby wyświetlić listę obiektów blob rozpoczynających się od tego prefiksu. Określ wartość BlobPrefix kolejnych żądań. W ten sposób można przejść przez wirtualną hierarchię obiektów blob tak, jakby był to system plików. Aby zapoznać się z przykładem, zobacz Wyświetlanie listy obiektów blob z ogranicznikiem w dalszej części tego tematu.

Należy pamiętać, że każda BlobPrefix zwrócona wartość jest liczone w kierunku maksymalnego wyniku.

Należy również pamiętać, że nie można wyświetlić listy migawek obiektów blob, jeśli dołączysz ogranicznik do żądania. Jeśli określisz wartość parametru delimiter , a także ustawisz include=snapshots parametr, usługa Blob zwróci błąd InvalidQueryParameter (kod stanu HTTP 400 — nieprawidłowe żądanie).

Format odpowiedzi XML

Dane wyjściowe listy to dokument XML, którego format jest podobny do tych pokazanych w przykładach kodu w dalszej części tego tematu.

Treść odpowiedzi zawiera wartości wszystkich parametrów określonych w identyfikatorze URI żądania jako elementy w treści odpowiedzi.

Wartość DateTime zwrócona w Last-Modified elemecie ma format RFC 1123. Aby uzyskać więcej informacji na temat DateTime wartości, zobacz Reprezentacja wartości daty/godziny w nagłówkach.

Wyświetlanie listy kontenerów

W tym przykładzie przedstawiono wynik operacji wyświetlania listy, która zwraca dwa kontenery. Identyfikator URI żądania jest następujący:

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

Określono prefiks "c", aby filtrować listę. Maksymalna liczba wyników do zwrócenia została ustawiona na 3. Tag NextMarker przedstawia nazwę kontenera, który zostanie zwrócony podczas kolejnej operacji wyświetlania listy.

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

Wyświetlanie listy obiektów blob i migawek

W tym przykładzie przedstawiono wynik operacji wyświetlania listy, która zwraca obiekty blob i migawki w kontenerze o nazwie mycontainer. Identyfikator URI żądania jest następujący:

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

Odpowiedź obejmuje zarówno obiekty blob, 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>  

Wyświetlanie listy obiektów blob z ogranicznikiem

W tym przykładzie przedstawiono wynik operacji wyświetlania listy, która zwraca obiekty blob poniżej kontenera o nazwie mycontainer. Identyfikator URI żądania jest następujący:

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

W tym przypadku delimiter parametr jest określony jako /. Treść odpowiedzi zawiera tag, który reprezentuje grupę BlobPrefix obiektów blob rozpoczynających się od tego samego podciągu, w tym ogranicznika.

Przykładowe obiekty blob poniżej kontenera są następujące. Pierwsze cztery są zwracane w pierwszej operacji listy, ponieważ MaxResults jest ustawiona na 4. Należy pamiętać, że folder myfolder/blobA.txt i myfolder/blobB.txt są grupowane razem w treści odpowiedzi w tagu BlobPrefix i liczą się jako pojedynczy obiekt blob pod względem liczby zwróconych jednostek. Aby zwrócić obiekty blob rozpoczynające się od tego prefiksu, utwórz kolejne żądanie, w którym parametr prefiksu jest ustawiony na myfolder/.

  • blob1.txt

  • blob2.txt

  • mójfolder/blobA.txt

  • mójfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

Następnym obiektem blob, który ma zostać zwrócony, jest newblob2.txt. Nazwa obiektu 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>  

Wyświetlanie listy obiektów blob w kontenerze głównym

Aby wyświetlić listę obiektów blob 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 po wyświetleniu listy obiektów blob w kontenerze głównym treść odpowiedzi XML nie zawiera jawnego odwołania do kontenera głównego w polu obiektu blob URL . Oto przykładowa odpowiedź zawierająca listę obiektów blob 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>  
  

Zobacz też

Wyświetlanie listy kontenerów
Wyświetlanie listy obiektów blob
Pojęcia dotyczące usługi Blob
Przechowywanie wersji usług Azure Storage