Especificando o cabeçalho de intervalo para operações de serviço blob

Várias operações GET do serviço Blob oferecem suporte ao uso do cabeçalho Range HTTP padrão. Muitos clientes HTTP, incluindo a biblioteca de clientes .NET, limitam o tamanho do Range cabeçalho a um inteiro de 32 bits e, portanto, seu valor é limitado a um máximo de 4 GiB. Como blobs de blocos e blobs de página podem ter mais de 4 GiB de tamanho, o serviço Blob aceita um cabeçalho x-ms-range de intervalo personalizado para qualquer operação que usa um cabeçalho HTTP Range .

Alguns clientes de HTTP, inclusive a biblioteca do Microsoft Silverlight, restringem completamente o acesso ao cabeçalho Range. O cabeçalho x-ms-range também pode ser usado para contornar essas limitações.

Se o cabeçalho x-ms-range for especificado em uma solicitação, o serviço usará o intervalo especificado por x-ms-range; caso contrário, o intervalo especificado pelo cabeçalho Range será usado.

Observação

A Biblioteca de Clientes de Armazenamento do Azure trata automaticamente da configuração do cabeçalho de intervalo na solicitação quando você define a propriedade Range do objeto PutPageProperties.

Formatos de cabeçalho de intervalo

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

  • bytes=startByte- para solicitações que usam a versão 2011-08-18 ou mais recente

  • bytes=startByte-endByte para solicitações que usam todas as versões (da 2009-04-14 até a versão mais recente)

Formato 1: bytes=startByte-

O primeiro formato, bytes=startByte-, só está disponível para solicitações que usam a versão 2011-08-18 ou mais recente, ou o serviço emulador de armazenamento no SDK 1.6 ou mais recente. Esse intervalo retornará bytes do deslocamento startByte até o término do blob. Por exemplo, para especificar um intervalo que abranja todos os bytes após os primeiros 256 bytes de um blob, você pode transmitir qualquer um dos seguintes cabeçalhos:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

O cabeçalho Content-Length na resposta é igual ao número de bytes do deslocamento até o final do blob. Usando o intervalo de exemplo anterior para um blob de 1.024 bytes de comprimento, Content-Length será 756.

Se o deslocamento for válido e não exceder o comprimento total do blob, a solicitação retornará um código de status 206 (Conteúdo Parcial). Se o deslocamento for inválido e exceder o comprimento total do blob, a solicitação retornará um código de status 416 (Intervalo Solicitado não Satisfatório).

Formato 2: bytes=startByte-endByte

O segundo formato, bytes=startByte-endByte, está disponível para solicitações que usam todas as versões (da 2009-04-14 até a versão mais recente) e para todas as versões do serviço emulador de armazenamento. Esse intervalo retornará bytes do deslocamento startByte até endByte. Por exemplo, para especificar um intervalo que abranja os primeiros 512 bytes de um blob, você transmitiria qualquer um dos seguintes cabeçalhos:

  • Range: bytes=0-511

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

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

Se o deslocamento for válido e não exceder o comprimento total do blob, a solicitação retornará um código de status 206 (Conteúdo Parcial). Se o deslocamento for inválido e exceder o comprimento total do blob, a solicitação retornará um código de status 416 (Intervalo Solicitado não Satisfatório).

Consulte Também

Conceitos do Serviço blob
Controle de versão para os serviços do Armazenamento do Azure