Auflisten von Blob Storage-Ressourcen

Die Blobdienst-API umfasst Vorgänge zum Auflisten der Container in einem Konto (der Vorgang Container auflisten ) und der Blobs in einem Container (der Vorgang Blobs auflisten ). Diese Vorgänge weisen einige gemeinsame Funktionen auf, die beachtet werden sollten.

Ein Auflistungsvorgang gibt eine XML-Antwort zurück, die die angeforderte Liste vollständig oder teilweise enthält. Der Vorgang gibt Entitäten in alphabetischer Reihenfolge zurück.

Dieses Thema enthält folgende Unterthemen:

Festlegen der maximalen Ergebnisse

Abrufen von Teillistenergebnissen mit Markern

Filtern von Listenergebnissen

Durchlaufen des Blobnamespace

XML-Antwortformat

Festlegen der maximalen Ergebnisse

Um die maximale Anzahl von Ergebnissen anzugeben, die in einem einzelnen Aufruf eines Auflistungsvorgangs zurückgegeben werden sollen, geben Sie einen Wert für den maxresults Parameter für den Anforderungs-URI an.

Wenn die maximale Anzahl von Ergebnissen nicht in der Anforderung angegeben ist oder größer als 5.000 ist, gibt der Server maximal 5.000 Elemente zurück. Wenn Sie eine maximale Anzahl von Ergebnissen angeben, die kleiner oder gleich 0 ist, gibt der Dienst status Code 400 (Ungültige Anforderung) zurück.

Abrufen von Teillistenergebnissen mit Markern

Wenn der Listenvorgang zum ersten Mal für eine bestimmte Ressource ausgeführt wird, kann die Antwort alle Ergebnisse enthalten oder eine Teilmenge der Ergebnisse und einen Markerwert enthalten. Der Markerwert kann an den nachfolgenden Aufruf übergeben werden, um den nächsten Satz von Ergebnissen (und dann das nächste) zurückzugeben, bis die Liste abgeschlossen ist und kein Marker zurückgegeben wird.

Der Markerwert ist im NextMarker-Element der XML-Antwort enthalten. Wenn das NextMarker-Element leer ist, ist die Auflistung abgeschlossen. Der Wert von NextMarker ist ein Zeichenfolgenwert, der für den Client nicht transparent ist.

Um den nächsten Satz von Ergebnissen in einem nachfolgenden Vorgang zurückzugeben, übergeben Sie den im NextMarker-Tag zurückgegebenen Wert als marker-Parameter im Anforderungs-URI.

Filtern von Listenergebnissen

Die Ergebnisliste kann gefiltert werden, indem mit dem prefix-Parameter eine Präfixzeichenfolge für die Anforderung angegeben wird. Der Auflistungsvorgang gibt dann die Entitäten zurück, deren Namen mit diesem Präfix beginnen. Wenn im Anforderungs-URI der prefix-Parameter angegeben ist, enthält das Antwort-XML ein Prefix-Element mit einem oder mehreren Präfixzeichen. Wenn Sie beispielsweise ein Präfix mit dem Wert "c" angeben, wird innerhalb der Antwort-XML zurückgegeben <Prefix>``c``</Prefix> . Ein Beispiel finden Sie im Abschnitt Auflisten von Containern weiter unten in diesem Thema.

Durchlaufen des Blobnamespace

Der Vorgang Blobs auflisten verfügt über einen zusätzlichen delimiter Parameter, mit dem der Aufrufer den Blobnamespace mithilfe eines vom Benutzer konfigurierten Trennzeichens durchlaufen kann. Das Trennzeichen kann ein einzelnes Zeichen oder eine Zeichenfolge sein. Wenn die Anforderung diesen Parameter enthält, gibt der Vorgang ein BlobPrefix-Element zurück. Das BlobPrefix-Element wird anstelle aller BLOBs zurückgegeben, deren Name bis zum Trennzeichen mit der gleichen Teilzeichenfolge beginnt. Der Wert des BlobPrefix Elements ist Teilzeichenfolge+Trennzeichen, wobei teilzeichenfolge die allgemeine Teilzeichenfolge ist, die einen oder mehrere Blobnamen beginnt, und Trennzeichen ist der Wert des Trennzeichenparameters .

Sie können den Wert von BlobPrefix verwenden, um einen nachfolgenden Aufruf zum Auflisten der Blobs zu tätigen, die mit diesem Präfix beginnen. Geben Sie den Wert von BlobPrefix für nachfolgende Anforderungen an. Auf diese Weise können Sie wie in einem Dateisystem eine virtuelle Hierarchie von BLOBs durchlaufen. Ein Beispiel finden Sie weiter unten in diesem Thema unter Auflisten von Blobs mit einem Trennzeichen .

Beachten Sie, dass jedes BlobPrefix zurückgegebene Ergebnis auf das maximale Ergebnis angerechnet wird.

Beachten Sie auch, dass Sie keine Blobmomentaufnahmen auflisten können, wenn Sie der Anforderung ein Trennzeichen hinzufügen. Wenn Sie einen Wert für den delimiter Parameter angeben und auch den include=snapshots Parameter festlegen, gibt der Blobdienst einen InvalidQueryParameter-Fehler (HTTP-status Code 400 – Ungültige Anforderung) zurück.

XML-Antwortformat

Die Listenausgabe ist ein XML-Dokument, dessen Format den Formaten in den Codebeispielen weiter unten in diesem Thema ähnelt.

Der Antworttext enthält die Werte aller Parameter, die für den Anforderungs-URI als Elemente innerhalb des Antworttexts angegeben wurden.

Der DateTime wert, der Last-Modified im -Element zurückgegeben wird, hat das RFC 1123-Format. Weitere Informationen zu DateTime Werten finden Sie unter Darstellung von Datums-/Uhrzeitwerten in Headern.

Auflisten von Containern

Dieses Beispiel zeigt das Ergebnis eines Auflistungsvorgangs, der zwei Container zurückgibt. Der Anforderungs-URI lautet wie folgt:

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

Das Präfix "c" wurde angegeben, um die Liste zu filtern. Die maximale Anzahl zurückzugebender Ergebnisse wurde auf 3 festgelegt. Das NextMarker Tag zeigt den Namen des Containers an, der bei einem nachfolgenden Auflistungsvorgang zurückgegeben wird.

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

Auflisten von Blobs und Momentaufnahmen

Dieses Beispiel zeigt das Ergebnis eines Auflistungsvorgangs, der Blobs und Momentaufnahmen in einem Container namens mycontainer zurückgibt. Der Anforderungs-URI lautet wie folgt:

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

Die Antwort enthält die BLOBs und Momentaufnahmen:

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

Auflisten von Blobs mit einem Trennzeichen

Dieses Beispiel zeigt das Ergebnis eines Auflistungsvorgangs, der Blobs unter einem Container namens mycontainer zurückgibt. Der Anforderungs-URI lautet wie folgt:

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

In diesem Fall wird der delimiter Parameter als /angegeben. Der Antworttext enthält das BlobPrefix Tag, das die Gruppe von Blobs darstellt, die mit derselben Teilzeichenfolge beginnen, einschließlich des Trennzeichens.

Die Beispiel-BLOBs unter dem Container lauten wie folgt. Die ersten vier werden beim ersten Listenvorgang zurückgegeben, da MaxResults auf 4 festgelegt ist. Beachten Sie, dass myfolder/blobA.txt und myfolder/blobB.txt im Antworttext im BlobPrefix Tag gruppiert sind und als einzelnes Blob in Bezug auf die Anzahl der zurückgegebenen Entitäten zählen. Um die Blobs zurückzugeben, die mit diesem Präfix beginnen, stellen Sie eine nachfolgende Anforderung, in der der Präfixparameter auf myfolder/festgelegt ist.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

Das nächste zurückgegebene Blob ist newblob2.txt. Der Blobname wird im NextMarker Tag angegeben.

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

Auflisten von Blobs im Stammcontainer

Um Blobs im Stammcontainer aufzulisten, können Sie die folgende URL verwenden:

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

Beachten Sie, dass der XML-Antworttext beim Auflisten der Blobs im Stammcontainer keinen expliziten Verweis auf den Stammcontainer im Feld des Blobs URL enthält. Im Folgenden finden Sie eine Beispielantwort, die Blobs im Stammcontainer auflistet:

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

Weitere Informationen

Auflisten von Containern
Auflisten von Blobs
Konzepte des Blob-Diensts
Versionsverwaltung für die Azure Storage-Dienste