Elenco delle risorse di archiviazione Blob

L'API del servizio Blob include operazioni per elencare i container all'interno di un account (operazione List Containers ) e i blob all'interno di un container (l'operazione List Blobs ). Queste operazioni hanno alcune caratteristiche comuni degne di nota.

Un'operazione di elenco restituisce una risposta che contiene tutto o parte della lista richiesta. L'operazione restituisce entità in ordine alfabetico.

Questo argomento contiene i seguenti sottoargomenti:

Impostare i risultati massimi

Recupera i risultati parziali della lista con i marcatori

Risultati della lista di filtri

Attraversa lo spazio di nomi del blob

Formato di risposta XML

Formato di risposta Apache Arrow

Impostare i risultati massimi

Per specificare il numero massimo di risultati da restituire in una singola chiamata a un'operazione di listing, specifica un valore per il maxresults parametro sull'URI della richiesta.

Se il numero massimo di risultati non è specificato nella richiesta o se è superiore a 5.000, il server restituisce fino al massimo di 5.000 elementi. Se specifichi un numero massimo di risultati inferiore o uguale a zero, il servizio restituisce il codice di stato 400 (Richiesta Cattiva).

Recupera i risultati parziali della lista con i marcatori

La prima volta che l'operazione di elenco viene eseguita su una particolare risorsa, la risposta può contenere tutti i risultati, oppure può contenere un sottoinsieme dei risultati e un valore marcatore. Il valore del marcatore può essere passato alla chiamata successiva per restituire il prossimo insieme di risultati (e poi il successivo) finché la lista non è completa e non viene restituito alcun marcatore.

Il valore del marcatore viene restituito come NextMarker. In una risposta XML, NextMarker è un elemento nel corpo della risposta. In una risposta Apache Arrow List Blobs, NextMarker c'è un campo nei metadati dello schema. Quando NextMarker è vuoto, l'annuncio è completo. Il valore di NextMarker è un valore di stringa opaco per il client.

Per restituire il prossimo insieme di risultati in un'operazione successiva, passa il valore restituito NextMarker come marker parametro sull'URI della richiesta.

Risultati della lista di filtri

L'elenco dei risultati può essere filtrato specificando una stringa prefisso sulla richiesta usando il prefix parametro. L'operazione di lista restituisce quindi le entità che hanno nomi che iniziano con quel prefisso. Se il prefix parametro è specificato sull'URI della richiesta, l'XML della risposta include un Prefix elemento contenente il carattere prefisso o i caratteri. Ad esempio, specificare un prefisso con valore "c" restituisce <Prefix>``c``</Prefix> all'interno dell'XML della risposta. Per un esempio, vedi la sezione Elenco contenitori più avanti in questo argomento.

Attraversa lo spazio di nomi del blob

L'operazione List Blobs ha un parametro aggiuntivo delimiter che permette al chiamante di attraversare il namespace blob utilizzando un delimitatore configurato dall'utente. Il delimitatore può essere un singolo carattere o una stringa. Quando la richiesta include questo parametro, l'operazione restituisce un BlobPrefix elemento. L'elemento BlobPrefix viene restituito al posto di tutte le macchie con nomi che iniziano con la stessa sottostringa fino alla comparsa del carattere delimitatore. Il valore dell'elemento BlobPrefix è sottostringa+delimitatore, dove sottostringa è la sottostringa comune che inizia uno o più nomi di blob, e delimitatore è il valore del parametro delimitatore .

È possibile usare il valore di BlobPrefix per effettuare una chiamata successiva per elencare i BLOB che iniziano con questo prefisso. Specifica il valore di BlobPrefix per richieste successive. In questo modo, è possibile attraversare una gerarchia virtuale di BLOB come se fosse un file system. Per un esempio, vedi Elenco blob con delimitatore più avanti in questo argomento.

Nota che ogni BlobPrefix risultato restituito conta per il risultato massimo.

Tieni anche presente che non puoi elencare gli snapshot blob se includi un delimitatore nella richiesta. Se specifichi un valore per il delimiter parametro e imposti anche il include=snapshots parametro, il servizio Blob restituisce un errore InvalidQueryParameter (codice stato HTTP 400 – Richiesta Mala).

Formato di risposta XML

L'output della lista è un documento XML il cui formato è simile a quelli mostrati negli esempi di codice più avanti in questo argomento.

Il corpo della risposta include i valori di tutti i parametri specificati nell'URI della richiesta come elementi all'interno del corpo della risposta.

Il DateTime valore restituito nell'elemento Last-Modified è in formato RFC 1123. Per maggiori informazioni sui DateTime valori, vedi Rappresentazione dei valori data/ora nelle intestazioni.

Elencare i contenitori

Questo esempio mostra il risultato di un'operazione di inserimento che restituisce due contenitori. L'URI della richiesta è la seguente:

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

Il prefisso "c" è stato specificato per filtrare la lista. Il numero massimo di risultati da restituire era fissato a 3. Il NextMarker tag mostra il nome del contenitore che verrà restituito in una successiva operazione di inserimento.

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

Elenco di blob e istantanee

Questo esempio mostra il risultato di un'operazione di listing che restituisce blob e istantanee in un contenitore chiamato mycontainer. L'URI della richiesta è la seguente:

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

La risposta include sia i blob che gli snapshot:

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

Elenca blob con un delimitatore

Questo esempio mostra il risultato di un'operazione di inserimento che restituisce blob sotto un contenitore chiamato mycontainer. L'URI della richiesta è la seguente:

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

In questo caso, il parametro delimiter è specificato come /. Il corpo della risposta include il BlobPrefix tag, che rappresenta il gruppo di blob che iniziano con la stessa sottostringa, incluso il delimitatore.

Le macchie di campione sotto il contenitore sono le seguenti. I primi quattro vengono restituiti nella prima operazione di elenco, perché MaxResults è impostato a 4. Nota che myfolder/blobA.txt e myfolder/blobB.txt sono raggruppati insieme nel corpo della risposta nel BlobPrefix tag e contano come un singolo blob in termini del numero di entità restituite. Per restituire i blob che iniziano con questo prefisso, effettua una richiesta successiva in cui il parametro prefisso viene impostato su myfolder/.

  • blob1.txt

  • blob2.txt

  • MyFolder/blobA.txt

  • MyFolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

Il prossimo blob da restituire è newblob2.txt. Il nome del blob è indicato nel NextMarker tag.

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

Elenca blob nel contenitore radice

Per elencare i blob nel contenitore radice, puoi usare il seguente URL:

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

Tieni presente che quando elenchi i blob nel contenitore root, il corpo della risposta XML non include un riferimento esplicito al container root nel campo del URL blob. Ecco una risposta di esempio che elenca i blob nel contenitore root:

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

Formato di risposta Apache Arrow

A partire dalla versione 2026-06-06, l'operazione List Blobs può anche restituire risultati nel formato Apache Arrow . L'operazione List Containers al momento non supporta Apache Arrow.

Note

Il supporto di Apache Arrow per i Blob delle Liste è attualmente in anteprima pubblica.

L'output della lista è un flusso binario di Apache Arrow. Ogni esempio in questo argomento mostra il batch di record come una tabella in cui ogni riga è un prefisso di blob o blob e ogni colonna è un campo. I campi di timestamp, come Last-Modified, sono qui mostrati in formato ISO 8601. Ogni tabella è seguita dai NumberOfRecords valori e NextMarker dei metadati dello schema.

Elenca blob e istantanee in formato Apache Arrow

Questo esempio mostra il risultato di un'operazione di listing che restituisce blob e istantanee in un contenitore chiamato mycontainer. L'URI della richiesta è la seguente:

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

La risposta include sia i blob che gli snapshot:

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 massa amorfa Null 2009-09-09T09:20:02Z 0x8CBFF45D8A29A19 100 text/html Null en-US no-cache Null BlockBlob sbloccato {Colore: blu, Numero Blob: 01, NomeMetadati: QualcunoMetaValore}
blob2.txt massa amorfa 2009-09-09T09:20:03.0427659Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip Null Null Null BlockBlob Null {Colore: verde, BlobNumber: 02, SomeMetadataName: SomeMetadataValue, x-ms-invalid-name: nasdf$@#$$}
blob2.txt massa amorfa 2009-09-09T09:20:03.1587543Z 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip Null Null Null BlockBlob Null {Colore: verde, Numero Blob: 02, SomeMetadataName: SomeMetadataValue}
blob2.txt massa amorfa Null 2009-09-09T09:20:02Z 0x8CBFF45D8B4C212 5000 application/octet-stream gzip Null Null Null BlockBlob sbloccato {Colore: verde, Numero Blob: 02, SomeMetadataName: SomeMetadataValue}
blob3.txt massa amorfa Null 2009-09-09T09:20:03Z 0x8CBFF45D911FADF 16384 image/jpeg Null Null Null 3 PageBlob bloccato {Colore: giallo, Numero Blob: 03, NomeMetadatiQualcosa: ValoreMetadati}

I metadati dello schema contengono NumberOfRecords5 = e NextMarker = vuoti, il che indica che l'elenco è completo.

Elenco dei blob con un delimitatore in formato Apache Arrow

Questo esempio mostra il risultato di un'operazione di inserimento che restituisce blob sotto un contenitore chiamato mycontainer. L'URI della richiesta è la seguente:

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

In questo caso, il parametro delimiter è specificato come /. Il corpo della risposta include un record impostato ResourceType su blobprefix, che rappresenta il gruppo di blob che iniziano con la stessa sottostringa, incluso il delimitatore.

Le macchie di campione sotto il contenitore sono le seguenti. I primi quattro vengono restituiti nella prima operazione di elenco, perché MaxResults è impostato a 4. Nota che myfolder/blobA.txt e myfolder/blobB.txt sono raggruppati insieme nel corpo della risposta nel blobprefix record e contano come un singolo blob in termini del numero di entità restituite. Per restituire i blob che iniziano con questo prefisso, effettua una richiesta successiva in cui il parametro prefisso viene impostato su myfolder/.

  • blob1.txt

  • blob2.txt

  • MyFolder/blobA.txt

  • MyFolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

newblob2.txt sarà il prossimo blob restituito quando opaqueString viene passato come parametro marker in una richiesta successiva.

Name ResourceType Last-Modified Etag Content-Length Content-Type Content-Language Cache-Control BlobType LeaseStatus
blob1.txt massa amorfa 2009-09-27T18:41:57Z 0x8CAE7D55D050B8B 8 text/html en-US no-cache BlockBlob sbloccato
blob2.txt massa amorfa 2009-09-27T12:18:50Z 0x8CAE7D55CF6C339 100 text/html en-US no-cache BlockBlob sbloccato
miafolder/ blobprefix Null Null Null Null Null Null Null Null
newblob1.txt massa amorfa 2009-09-27T16:31:57Z 0x8CAE7D55CF6C339 25 text/html en-US no-cache BlockBlob sbloccato

I metadati dello schema contengono NumberOfRecords = 4 e .NextMarker = opaqueString

Vedere anche

Elenco dei contenitori
Elenca i blob
Concetti di servizio blob
Versioning for the Archiviazione di Azure services