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 recentebytes=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