VENDITE: 1-800-867-1389

Enumerazione di risorse Blob

Aggiornamento: aprile 2013

L'API del servizio Blob include operazioni per l'enumerazione dei contenitori all'interno di un account (operazione List Containers (API REST)) e dei Blob all'interno di un contenitore (operazione List Blobs (API REST)). Queste operazioni hanno funzionalità comuni degne di nota.

Un'operazione di enumerazione restituisce una risposta XML che contiene, interamente o in parte, l'elenco richiesto. L'operazione restituisce le entità in ordine alfabetico.

In questo argomento sono contenute gli argomenti secondari seguenti:

Impostazione del numero massimo di risultati

Recupero dei risultati elenco parziali con marcatori

Applicazione di filtri sui risultati elenco

Attraversamento dello spazio dei nomi Blob

Formato della risposta XML

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

Se il numero massimo di risultati non viene specificato nella richiesta o è maggiore di 5.000, verrà restituito fino a un massimo di 5.000 elementi. Se si specifica un numero massimo di risultati minore o uguale a zero, viene restituito il codice di stato 400 (Richiesta non valida).

La prima volta che viene eseguita l''operazione di enumerazione in una risorsa specifica, è possibile che la risposta contenga tutti i risultati o un subset dei risultati e un valore di marcatore. Il valore di marcatore può essere passato alla chiamata successiva per restituire il set successivo di risultati e così via, finché l'elenco non viene completato e finché non viene restituito alcun marcatore.

Il valore di marcatore è incluso nell'elemento NextMarker della risposta XML. Se l'elemento NextMarker è vuoto, l'elenco è completo. Il valore di NextMarker è un valore stringa che risulta opaco al client.

Per restituire il set successivo di risultati in un'operazione successiva, passare il valore restituito nel parametro NextMarker come parametro marker nell'URI della richiesta.

  • L'elenco dei risultati può essere filtrato specificando una stringa prefisso nella richiesta utilizzando il parametro prefix. Operazione elenco che restituisce le entità i cui nomi iniziano con quel prefisso. Se il parametro prefix viene specificato nell'URI della richiesta, la risposta XML include un elemento Prefix che contiene il carattere o i caratteri del prefisso. Un prefisso con un valore 'c', ad esempio, restituisce <Prefix>c</Prefix> nella risposta XML. Per un esempio, vedere la sezione Elenco di contenitori più avanti in questo argomento.

L'operazione List Blobs (API REST) presenta un parametro delimiter aggiuntivo che consente al chiamante di attraversare lo spazio dei nomi Blob utilizzando un delimitatore configurato dall'utente. Il delimitatore può essere un singolo carattere o una stringa. Se la richiesta include questo parametro, l'operazione restituisce un elemento BlobPrefix. L'elemento BlobPrefix viene restituito al posto di tutti i Blob i cui nomi iniziano con la stessa sottostringa fino al carattere delimitatore. Il valore dell'elemento BlobPrefix è substring+delimiter, dove substring è la sottostringa comune con cui iniziano uno o più nomi di Blob e delimiter è il valore del parametro delimiter.

È possibile utilizzare il valore di BlobPrefix per effettuare una chiamata successiva per elencare i Blob i cui nomi iniziano con questo prefisso, specificando il valore di BlobPrefix per il parametro prefix nell'URI della richiesta. In questo modo, è possibile attraversare una gerarchia virtuale di Blob come se si trattasse di un file system. Per un esempio, vedere Elenco di Blob delimitato più avanti in questo argomento.

Si noti che ogni BlobPrefix restituisce i conteggi rispetto al numero massimo di risultati.

Si noti che non è possibile enumerare gli snapshot Blob se si include un delimitatore con la richiesta. Se si specifica un valore per il parametro delimiter e si imposta il parametro include=snapshots, il servizio Blob restituisce l'errore InvalidQueryParameter (codice di stato HTTP 400 - Richiesta non valida).

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

Si noti che 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 valore DateTime restituito nell'elemento Last-Modified è nel formato RFC 1123. Per ulteriori informazioni sui valori DateTime, vedere Rappresentazione di valori di data e ora nelle intestazioni.

In questo esempio viene illustrato il risultato di un'operazione di enumerazione che restituisce due contenitori. L'URI della richiesta è il seguente:

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

Il prefisso 'c' è stato specificato per filtrare l'elenco. Il numero massimo di risultati da restituire è stato impostato su 3. Il tag NextMarker mostra il nome del contenitore che verrà restituito in un'operazione elenco successiva.

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

In questo esempio viene mostrato il risultato di un'operazione di enumerazione che restituisce i Blob e gli snapshot in un contenitore denominato mycontainer. L'URI della richiesta è il seguente:

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

La risposta include sia i Blob sia 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>

In questo esempio viene mostrato il risultato di un'operazione di enumerazione che restituisce i Blob in un contenitore denominato mycontainer. L'URI della richiesta è il seguente:

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

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

I Blob di esempio nel contenitore sono i seguenti. I primi quattro vengono restituiti nella prima operazione di enumerazione, poiché MaxResults è impostato su 4. Si noti che myfolder/blobA.txt e myfolder/blobB.txt sono raggruppati nel corpo della risposta nel tag BlobPrefix e sono considerati come singolo Blob in termini di numero di entità restituite. Per restituire i Blob che iniziano con questo prefisso, effettuare una chiamata successiva in cui il parametro prefisso è impostato su myfolder/.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

Il Blob successivo da restituire è newblob2.txt, restituito nel tag 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>

Per enumerare i Blob nel contenitore radice, è possibile utilizzare l'URL seguente:

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

Ricordare che quando si elencano i Blob nel contenitore radice, il corpo della risposta XML non include un riferimento esplicito al contenitore radice nel campo URL del Blob. Di seguito è riportata una risposta di esempio che elenca i Blob nel contenitore radice:


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

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft