Especificar o cabeçalho do intervalo para operações do serviço Blob

Várias operações GET do serviço Blob suportam a utilização do cabeçalho HTTP Range padrão. Muitos clientes HTTP, incluindo a biblioteca de cliente .NET, limitam o tamanho do Range cabeçalho a um número inteiro de 32 bits e, portanto, o valor está limitado a um máximo de 4 GiB. Uma vez que tanto os blobs de blocos como os blobs de páginas podem ter um tamanho superior a 4 GiB, o serviço Blob aceita um cabeçalho x-ms-range de intervalo personalizado para qualquer operação que utilize um cabeçalho HTTP Range .

Alguns clientes HTTP, incluindo a biblioteca do Microsoft Silverlight, limitam completamente o Range acesso ao cabeçalho. O x-ms-range cabeçalho também pode ser utilizado para contornar estas limitações.

Se o x-ms-range cabeçalho for especificado num pedido, o serviço utiliza o intervalo especificado por x-ms-range; caso contrário, é utilizado o intervalo especificado pelo Range cabeçalho.

Nota

A Biblioteca de Cliente do Armazenamento do Azure processa automaticamente a definição do cabeçalho de intervalo adequado no pedido quando define a Range propriedade do PutPageProperties objeto.

Formatos de Cabeçalho do Intervalo

O serviço Blob aceita dois intervalos de bytes para os Range cabeçalhos e x-ms-range . O intervalo de bytes tem de cumprir qualquer um dos seguintes formatos para os cabeçalhos:

  • bytes=startByte- para pedidos com a versão 2011-08-18 ou mais recente

  • bytes=startByte-endByte para pedidos com todas as versões (2009-04-14 através da versão mais recente)

Formato 1: bytes=startByte-

O primeiro formato, bytes=startByte-, está disponível apenas para pedidos com a versão 2011-08-18 ou mais recente, ou o serviço de emulador de armazenamento no SDK 1.6 ou mais recente. Este intervalo devolverá bytes do desvio startByte até ao final do blob. Por exemplo, para especificar um intervalo que abrange todos os bytes após os primeiros 256 bytes de um blob, pode transmitir um dos seguintes cabeçalhos:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

O Content-Length cabeçalho na resposta é igual ao número de bytes do desvio até ao fim do blob. Utilizar o intervalo de exemplo acima para um blob de 1024 bytes de comprimento Content-Length seria 756.

Se o desvio for válido e não exceder o comprimento total do blob, o pedido devolverá um código de estado 206 (Conteúdo Parcial). Se o desvio for inválido e exceder o comprimento total do blob, o pedido devolverá o código de estado 416 (Intervalo Pedido Não Satisfiável).

Formato 2: bytes=startByte-endByte

O segundo formato, bytes=startByte-endByte, está disponível para pedidos que utilizam todas as versões (2009-04-14 através da versão mais recente) e para todas as versões do serviço de emulador de armazenamento. Este intervalo devolverá bytes do deslocamento startByte através endBytede . Por exemplo, para especificar um intervalo que abranja os primeiros 512 bytes de um blob, transmitiria um dos seguintes cabeçalhos:

  • Range: bytes=0-511

  • x-ms-range: bytes=0-511

O Content-Length cabeçalho na resposta é igual ao número de bytes entre cada deslocamento. Utilizar o intervalo de exemplo acima para um blob de 1024 bytes de comprimento Content-Length seria 512.

Se o desvio for válido e não exceder o comprimento total do blob, o pedido devolverá um código de estado 206 (Conteúdo Parcial). Se o desvio for inválido e exceder o comprimento total do blob, o pedido devolverá o código de estado 416 (Intervalo Pedido Não Satisfiável).

Consulte também

Conceitos do Serviço blob
Versões para os Serviços de Armazenamento do Azure