Get Block List

Tramite l'operazione Get Block List viene recuperato l'elenco di blocchi caricati come parte di un Blob in blocchi.

Per un Blob vengono mantenuti due elenchi di blocchi:

  • Elenco blocchi di commit: Elenco di blocchi che sono stati sottoposti correttamente al commit di un BLOB specificato con Put Block List.

  • Elenco blocchi non generato: Elenco di blocchi caricati per un BLOB usando Put Block, ma che non sono ancora stati sottoposti a commit. Questi blocchi vengono archiviati in Azure in associazione con un Blob, ma non ancora fanno parte di esso.

È possibile chiamare Get Block List per restituire l'elenco di blocchi di cui è stato eseguito il commit, l'elenco di blocchi di cui non è stato eseguito il commit o entrambi gli elenchi. È anche possibile chiamare questa operazione per recuperare l'elenco di blocchi di cui è stato eseguito il commit per uno snapshot.

Richiesta

La richiesta Get Block List può essere costruita come segue. È consigliato il protocollo HTTPS. Sostituire myaccount con il nome dell'account di archiviazione:

URI richiesta del metodo GET Versione HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&versionid=<DateTime>
HTTP/1.1

URI del servizio di archiviazione emulato

Quando si effettua una richiesta nel servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta del servizio Blob come 127.0.0.1:10000, seguiti dal nome dell'account di archiviazione emulato:

URI richiesta del metodo GET Versione HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist HTTP/1.1

Per altre informazioni, vedere Uso della Archiviazione di Azure Emulator per sviluppo e test.

Parametri URI

Nell'URI richiesta è possibile specificare i seguenti parametri aggiuntivi.

Parametro URI Descrizione
snapshot Facoltativa. Il parametro snapshot è un valore DateTime opaco che, se presente, specifica l'elenco di Blob da recuperare. Per altre informazioni sull'uso di snapshot BLOB, vedere Creazione di uno snapshot di un BLOB.
versionid Facoltativo per le versioni 2019-12-12 e versioni successive. Il parametro versioni è un valore opaco DateTime che, quando presente, specifica la versione del BLOB da recuperare.
blocklisttype Specifica se restituire l'elenco dei blocchi di cui è stato eseguito il commit, l'elenco dei blocchi di cui non è stato eseguito il commit o entrambi. I valori validi sono committed, uncommitted o all. Se si omette questo parametro, Get Block List restituisce l'elenco dei blocchi di cui è stato eseguito il commit.
timeout facoltativo. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione dei timeout per le operazioni del servizio BLOB.

Intestazioni richiesta

Nella seguente tabella vengono descritte le intestazioni di richiesta obbligatorie e facoltative.

Intestazione della richiesta Descrizione
Authorization Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste a Archiviazione di Azure.
Date o x-ms-date Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste a Archiviazione di Azure.
x-ms-version Obbligatorio per tutte le richieste autorizzate, facoltativo per le richieste anonime. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di Archiviazione di Azure.
x-ms-lease-id:<ID> facoltativo. Se questa intestazione viene specificata, l'operazione viene eseguita solo se vengono soddisfatte entrambe le condizioni seguenti:

- Il lease del BLOB è attualmente attivo.
- ID lease specificato nella richiesta corrisponde a quello del BLOB.

Se questa intestazione viene specificata e tutte e due le condizioni non vengono soddisfatte, la richiesta ha esito negativo e viene restituito il codice di stato 412 (Condizione preliminare non riuscita).
x-ms-client-request-id facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 KiB registrato nei log di analisi quando la registrazione dell'analisi di archiviazione è abilitata. L'uso di questa intestazione è consigliato per la correlazione delle attività lato client con le richieste ricevute dal server. Per altre informazioni, vedere Informazioni sulla registrazione di Analisi archiviazione e registrazione di Azure: uso dei log per tenere traccia delle richieste di Archiviazione.

Questa operazione supporta l'utilizzo delle intestazioni condizionali per eseguire l'operazione solo se viene soddisfatta una determinata condizione. Per altre informazioni, vedere Specifica di intestazioni condizionali per le operazioni del servizio BLOB.

Corpo della richiesta

Nessuno.

Richiesta di esempio

Il seguente URI richiesta di esempio restituisce l'elenco di blocchi di cui è stato eseguito il commit per un Blob denominato MOV1.avi:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1  

Il seguente URI richiesta di esempio restituisce sia l'elenco di blocchi di cui è stato eseguito il commit sia quello dei blocchi di cui non è stato eseguito il commit.

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1  

Il seguente URI richiesta di esempio restituisce l'elenco di blocchi di cui è stato eseguito il commit per uno snapshot. Si noti che lo snapshot è dato unicamente da blocchi di cui è stato eseguito il commit, pertanto a esso non sono associati blocchi di cui non è stato eseguito il commit.

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z  

Risposta

Nella risposta sono inclusi un codice di stato HTTP, un set di intestazioni della risposta e il corpo della risposta contenente l'elenco di blocchi.

Codice di stato

Un'operazione completata correttamente restituisce 200 (OK).

Per informazioni sui codici di stato, vedere Codici di stato e di errore.

Intestazioni della risposta

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Intestazione risposta Descrizione
Last-Modified Data e ora dell'ultima modifica del Blob. Il formato data è conforme a RFC 1123. Per altre informazioni, vedere Rappresentazione dei valori Date-Time nelle intestazioni . Questa intestazione viene restituita solo se il Blob contiene blocchi di cui è stato eseguito il commit.

Qualsiasi operazione che comporta la modifica del Blob, inclusi aggiornamenti dei metadati o delle proprietà del Blob, comporta la modifica anche dell'ora dell'ultima modifica del Blob.
ETag Valore ETag per il Blob. Questa intestazione viene restituita solo se il Blob contiene blocchi di cui è stato eseguito il commit.
Content-Type Tipo di contenuto MIME del Blob. Il valore predefinito è application/xml.
x-ms-blob-content-length La dimensione del BLOB in byte.
x-ms-request-id Questa intestazione identifica in modo univoco la richiesta effettuata e può essere usata per risolvere i problemi relativi alla richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni api.
x-ms-version Indica la versione del servizio Blob usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.

Questa intestazione viene restituita anche per le richieste anonime senza una versione specificata se il contenitore è stato contrassegnato per l'accesso pubblico utilizzando la versione 2009-09-19 del servizio Blob. Si noti che solo l'elenco di blocchi di cui è stato eseguito il commit può essere restituito tramite una richiesta anonima.
Date Valore data/ora UTC generato dal servizio che indica l'ora in cui è stata avviata la risposta.
x-ms-client-request-id Questa intestazione può essere usata per risolvere le richieste e le risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id se presente nella richiesta e il valore è al massimo 1024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, questa intestazione non sarà presente nella risposta.

Questa operazione supporta anche l'utilizzo delle intestazioni condizionali per ottenere l'elenco di elementi bloccati solo se viene soddisfatta una determinata condizione. Per altre informazioni, vedere Specifica di intestazioni condizionali per le operazioni del servizio BLOB.

Corpo della risposta

Il formato del corpo della risposta per una richiesta che restituisce solo i blocchi di cui è stato eseguito il commit è il seguente:

<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>base64-encoded-block-id</Name>  
      <Size>size-in-bytes</Size>  
    </Block>  
  <CommittedBlocks>  
</BlockList>  

Il formato del corpo della risposta per una richiesta che restituisce sia i blocchi di cui è stato eseguito il commit sia quelli di cui non è stato eseguito è il seguente:

  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
     <Block>  
        <Name>base64-encoded-block-id</Name>  
        <Size>size-in-bytes</Size>  
     </Block>  
  </CommittedBlocks>  
  <UncommittedBlocks>  
    <Block>  
      <Name>base64-encoded-block-id</Name>  
      <Size>size-in-bytes</Size>  
    </Block>  
  </UncommittedBlocks>  
 </BlockList>  
  

Risposta di esempio

Nel seguente esempio il parametro blocklisttype è stato impostato su committed, pertanto solo i blocchi di cui è stato eseguito il commit del Blob vengono restituiti nella risposta.

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Sun, 25 Sep 2011 00:33:19 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>4194304</Size>  
    </Block>  
  </CommittedBlocks>  
</BlockList>  

In questo esempio il parametro blocklisttype è stato impostato su all, pertanto sia i blocchi del BLOB di cui è stato eseguito il commit sia quelli di cui non è stato eseguito vengono restituiti nella risposta.

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Sun, 25 Sep 2011 00:35:56 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>4194304</Size>  
    </Block>  
  </CommittedBlocks>  
  <UncommittedBlocks>  
    <Block>  
      <Name>BlockId003</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId004</Name>  
      <Size>1024000</Size>  
    </Block>  
  </UncommittedBlocks>  
</BlockList>  

Nell'esempio successivo il parametro blocklisttype è stato impostato su all, ma il commit del Blob non è ancora stato eseguito, pertanto l'elemento CommittedBlocks è vuoto.

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Wed, 14 Sep 2011 00:40:22 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks />  
  <UncommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId003</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId004</Name>  
      <Size>1024</Size>  
    </Block>  
  </UncommittedBlocks>  
</BlockList>  

Autorizzazione

Se l'elenco di controllo di accesso del contenitore è impostato per consentire l'accesso anonimo, qualsiasi client può chiamare Get Block List; tuttavia, solo i blocchi di cui è stato eseguito il commit sono accessibili pubblicamente. L'accesso all'elenco di blocchi di cui non è stato eseguito il commit è limitato al proprietario dell'account e a chiunque utilizzi una firma di accesso condiviso con l'autorizzazione di lettura per il Blob o il relativo contenitore.

Commenti

Chiamare Get Block List per restituire l'elenco di blocchi di cui è stato eseguito il commit in un Blob in blocchi, l'elenco dei blocchi di cui non è ancora stato eseguito il commit o entrambi gli elenchi. Utilizzare il parametro blocklisttype per specificare l'elenco di blocchi da restituire. L'elenco dei blocchi di cui è stato eseguito il commit viene restituito nello stesso ordine di cui è stato eseguito il commit dall'operazione Put Block List .

È possibile utilizzare l'elenco dei blocchi di cui non è stato eseguito il commit per determinare i blocchi mancanti dal Blob nei casi in cui le chiamate a Put Block o a Put Block List hanno avuto esito negativo. L'elenco dei blocchi di cui non è stato eseguito il commit viene restituito in ordine alfabetico. Se un ID blocco è stato caricato più di una volta, nell'elenco compare solo il blocco caricato più recentemente.

Se non è ancora stato eseguito il commit di un Blob, la chiamata a Get Block List con blocklisttype=all restituisce i blocchi di cui non è stato eseguito il commit e l'elemento CommittedBlocks è vuoto.

Get Block List non supporta la concorrenza durante la lettura dell'elenco di blocchi di cui non è stato eseguito il commit. Chiamate a dove blocklisttype=uncommitted o blocklisttype=all hanno una frequenza massima di richieste inferiore rispetto ad Get Block List altre operazioni di lettura. Per informazioni dettagliate sulla velocità effettiva di destinazione per le operazioni di lettura, vedere Archiviazione di Azure Obiettivi di scalabilità e prestazioni.

A partire dalla versione 2019-12-12, un BLOB in blocchi può contenere blocchi fino a 4000 MiB di dimensioni. Per proteggere le applicazioni usando un intero con segno a 32 bit per rappresentare le dimensioni del blocco, la chiamata Get Block List a un BLOB in blocchi che contiene un blocco maggiore di 100 MiB con una versione REST precedente alla versione 2019-12-12 genera il codice di stato 409 (Conflitto).

Get Block List si applica solo ai Blob in blocchi. La chiamata a Get Block List in un Blob di pagine restituisce il codice di stato 400 (Richiesta non valida).

Get Block List in un BLOB in blocchi archiviato avrà esito negativo.

Vedi anche

Autorizzare le richieste a Archiviazione di Azure
Codici di stato e di errore
Codici di errore del servizio BLOB
Impostazione dei timeout per le operazioni del servizio Blob