Exporter (0) Imprimer
Développer tout

Énumération des ressources d'objet BLOB

Mis à jour: novembre 2014

L'API de service BLOB comprend des opérations d'énumération des conteneurs au sein d'un compte (l'opération List Containers (API REST)) et des blobs au sein d'un conteneur (l'opération List Blobs (API REST)). Ces opérations ont des fonctionnalités communes.

Une opération d'énumération retourne une réponse XML qui contient l'intégralité ou une partie de la liste demandée. L'opération retourne les entités dans l'ordre alphabétique.

Cette rubrique contient les sous-rubriques suivantes :

Définition des résultats maximum

Récupération de résultats de liste partiels avec marqueurs

Filtrage des résultats de liste

Parcours de l'espace de noms Blob

Format de réponse XML

Pour indiquer le nombre maximum de résultats à retourner dans un appel à une opération d'énumération, indiquez une valeur pour le paramètre maxresults dans l'URI de la demande.

Si le nombre maximum de résultats n'est pas indiqué dans la demande ou s'il est supérieur à 5 000, le serveur retournera le nombre maximum d'éléments (5 000). Si vous indiquez un nombre maximum de résultats inférieur ou égal à zéro, le service retourne le code d'état 400 (Demande incorrecte).

La première fois que l'opération d'énumération est effectuée sur une ressource donnée, la réponse peut contenir tous les résultats, ou elle peut contenir un sous-ensemble de résultats et une valeur de marqueur. La valeur de marqueur peut être passée à l'appel suivant qui doit retourner l'ensemble de résultats suivants, etc. jusqu'à ce que la liste soit terminée et qu'aucun marqueur ne soit retourné.

La valeur du marqueur est incluse dans l'élément NextMarker de la réponse XML. Quand l'élément NextMarker est vide, la liste est terminée. La valeur de NextMarker est une valeur de chaîne opaque au client.

Pour retourner l'ensemble de résultats suivant dans une opération suivante, passez la valeur retournée dans la balise NextMarker en tant que paramètre marker dans l'URI de la demande.

  • La liste des résultats peut être filtrée en indiquant une chaîne de préfixe dans la demande à l'aide du paramètre prefix. L'opération de liste retourne ensuite les entités dont les noms commencent par ce préfixe. Si le paramètre prefix est indiqué dans l'URI de la demande, le code XML de réponse comprend un élément Prefix qui contient le ou les caractères de préfixe. Par exemple, si vous indiquez un préfixe avec une valeur égale à « c », <Prefix>c</Prefix> est retourné au sein du code XML de réponse. Pour un exemple, consultez la section Liste de conteneur plus loin dans cette rubrique.

L'opération List Blobs (API REST) utilise un paramètre delimiter supplémentaire qui permet à l'appelant de parcourir l'espace de noms blob en utilisant un délimiteur configuré par l'utilisateur. Le délimiteur peut être un caractère ou une chaîne. Lorsque la demande comprend ce paramètre, l'opération retourne un élément BlobPrefix. L'élément BlobPrefix est retourné à la place de tous les objets blob dont le nom commence par la même sous-chaîne jusqu'au caractère du délimiteur. La valeur de l'élément BlobPrefix est substring+delimiter, où substring est la sous-chaîne commune qui débute un ou plusieurs noms d'objet blob, et delimiter est la valeur du paramètre delimiter.

Vous pouvez utiliser la valeur de BlobPrefix pour appeler la liste des objets blob qui commencent par ce préfixe, en indiquant la valeur de BlobPrefix pour le paramètre prefix dans l'URI de la demande. De cette façon, vous pouvez parcourir une hiérarchie virtuelle d'objets blob, comme s'il s'agissait d'un système de fichiers. Par exemple, consultez l'exemple de Liste d'objets blob délimités plus loin dans cette rubrique.

Notez que chaque BlobPrefix retourné compte pour le résultat maximum.

Vous ne pouvez pas énumérer des instantanés d'objet blob, si vous utilisez un délimiteur avec la demande. Si vous spécifiez une valeur pour le paramètre delimiter et définissez également le paramètre include=snapshots, le service BLOB retourne l'erreur InvalidQueryParameter (code d'état HTTP 400 – Demande incorrecte).

La sortie de liste est un document XML dont le format est identique à celui indiqué dans les exemples de code plus loin dans cette rubrique.

Notez que le corps de la réponse comprend les valeurs de tous les paramètres spécifiés dans l'URI de la demande en tant qu'éléments au sein du corps de la réponse.

La valeur DateTime retournée dans l'élément Last-Modified est au format RFC 1123. Pour plus d'informations sur les valeurs DateTime, consultez Représentation des valeurs Date/Heure dans les en-têtes.

Cet exemple montre le résultat d'une opération d'énumération retournant deux conteneurs. L'URI de demande est le suivant :

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

Le préfixe « c » a été spécifié pour filtrer la liste. Le nombre maximal de résultats à retourner a été défini à 3. La balise NextMarker affiche le nom du conteneur qui est retourné dans une opération de liste suivante.

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

Cet exemple montre le résultat d'une opération d'énumération qui retourne les objets blob et les instantanés d'un conteneur nommé mycontainer. L'URI de demande est le suivant :

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

La réponse comprend des objets blob et des instantanés :

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

Cet exemple montre le résultat d'une opération d'énumération qui retourne les objets blob sous un conteneur nommé mycontainer. L'URI de demande est le suivant :

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

Dans ce cas, le paramètre delimiter a été spécifié en tant que « / ». Le corps de la réponse comprend la balise BlobPrefix, qui représente le groupe d'objets blob commençant par la même sous-chaîne, y compris le délimiteur.

Les objets blob d'exemple sous le conteneur sont les suivants. Les quatre premiers sont retournés dans la première opération d'énumération, car MaxResults a la valeur 4. Notez que myfolder/blobA.txt et myfolder/blobB.txt sont regroupés dans le corps de la réponse de la balise BlobPrefix, et qu'ils comptent pour un unique objet blob en termes de nombre d'entités retournées. Pour retourner les objets blob commençant par ce préfixe, faites une demande suivante dans laquelle le paramètre de préfixe a la valeur myfolder/.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

L'objet blob suivant à renvoyer est newblob2.txt, retourné dans la balise 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>

Pour énumérer des objets blob dans le conteneur racine, vous pouvez utiliser l'URL suivante :

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

N'oubliez pas que lorsque vous répertoriez les objets blob dans le conteneur racine, le corps de la réponse XML n'inclut pas de mention explicite au conteneur racine dans le champ URL de l'objet blob. Voici un exemple d'objets blob de liste de réponse dans le conteneur racine :


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

Voir aussi

Afficher:
© 2015 Microsoft