Especificación del encabezado de intervalo para las operaciones de Blob Service

Son varias las operaciones GET del servicio Blob que admiten el uso del encabezado HTTP estándar Range. Muchos clientes HTTP, incluida la biblioteca cliente de .NET, limitan el tamaño del Range encabezado a un entero de 32 bits y, por tanto, su valor se limita a un máximo de 4 GiB. Dado que los blobs en bloques y los blobs en páginas pueden tener un tamaño superior a 4 GiB, Blob service acepta un encabezado x-ms-range de intervalo personalizado para cualquier operación que tome un encabezado HTTP Range .

Algunos clientes HTTP, incluida la biblioteca de Microsoft Silverlight, limitan totalmente el acceso al encabezado Range. El encabezado x-ms-range también se puede utilizar para evitar estas limitaciones.

Si se especifica el encabezado x-ms-range en una solicitud, el servicio utiliza el intervalo especificado en x-ms-range; si no se especifica, utiliza el intervalo especificado en el encabezado Range.

Nota:

La biblioteca de cliente de almacenamiento de Azure controla automáticamente el establecimiento del encabezado de intervalo apropiado en la solicitud cuando se establece la propiedad Range del objeto PutPageProperties.

Formatos del encabezado de intervalo

Blob service acepta dos intervalos de bytes para los encabezados Range y x-ms-range. El intervalo de bytes debe especificarse en cualquiera de los formatos de encabezado siguientes:

  • bytes=startByte- para las solicitudes que usan la versión 2011-08-18 o versiones más recientes.

  • bytes=startByte-endByte para las solicitudes que usan cualquiera de las versiones (de la 2009-04-14 a la más reciente)

Formato 1: bytes=startByte-

El primer formato, bytes=startByte-, solo está disponible para las solicitudes que usan la versión 2011-08-18 o una más reciente, o el servicio del emulador de almacenamiento de SDK 1.6 o una versión más reciente. Este intervalo devolverá los bytes existentes desde el desplazamiento startByte hasta el final del blob. Por ejemplo, para especificar un intervalo que englobe todos los bytes de un blob a partir de los primeros 256 bytes, puede pasar cualquiera de los encabezados siguientes:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

El valor del encabezado Content-Length de la respuesta es igual al número de bytes existentes desde el desplazamiento hasta el final del blob. El uso del intervalo de ejemplo anterior para un blob de 1024 bytes de longitud Content-Length sería de 756.

Si el desplazamiento es válido y no supera la longitud total del blob, la solicitud devolverá un código de estado 206 (Contenido parcial). Si el desplazamiento no es válido y supera la longitud total del blob, la solicitud devolverá un código de estado 416 (No se puede satisfacer el intervalo solicitado).

Formato 2: bytes=startByte-endByte

El segundo formato, bytes=startByte-endByte, está disponible para las solicitudes que usan cualquiera de las versiones (de la 2009-04-14 a la más reciente), y para todas las versiones del emulador de almacenamiento. Este intervalo devolverá los bytes existentes desde el desplazamiento startByte hasta endByte. Por ejemplo, para especificar un intervalo que englobe los primeros 512 bytes de un blob, deberá pasar cualquiera de los encabezados siguientes:

  • Range: bytes=0-511

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

El encabezado Content-Length de la respuesta es igual al número de bytes existentes entre cada desplazamiento. Si se usa el intervalo del ejemplo anterior para un blob con una longitud 1.024 bytes, el valor de Content-Length será 512.

Si el desplazamiento es válido y no supera la longitud total del blob, la solicitud devolverá un código de estado 206 (Contenido parcial). Si el desplazamiento no es válido y supera la longitud total del blob, la solicitud devolverá un código de estado 416 (No se puede satisfacer el intervalo solicitado).

Consulte también

Conceptos de Blob Service
Control de versiones para los servicios de Azure Storage