Экспорт (0) Печать
Развернуть все

Указание заголовка диапазона для операций службы BLOB-объектов

Обновлено: Ноябрь 2013 г.

Несколько операций GET службы BLOB-объектов поддерживают использование стандартного HTTP-заголовка Range. Большое количество HTTP-клиентов, включая клиентскую библиотеку .NET, ограничивают размер заголовка Range до 32-разрядного целого числа, и, следовательно, его размер не может быть больше 4 ГБ. Поскольку и блочный и страничный BLOB-объекты могут иметь размер больше 4 ГБ, служба BLOB-объектов принимает заголовок x-ms-range с нестандартным размером для любой операции, которая принимает HTTP-заголовок Range.

Некоторые HTTP-клиенты, включая библиотеку Microsoft Silverlight, вообще ограничивают доступ к заголовку Range. Можно использовать заголовок x-ms-range, чтобы обойти также и это ограничение.

Если в запросе указан заголовок x-ms-range, то служба использует диапазон, указанный x-ms-range; в противном случае используется диапазон, указанный в заголовке Range.

noteПримечание
Клиентская библиотека хранилища Windows Azure автоматически задает соответствующий заголовок диапазона для запроса, если установлено свойство Range объекта PutPageProperties.

Служба BLOB-объектов принимает двухбайтовые диапазоны для заголовков Range и x-ms-range. Байтовый диапазон должен соответствовать одному из следующих форматов:

  • bytes=startByte- для запросов из версии 2011-08-18 или более новой

  • bytes=startByte-endByte для запросов из всех версий (от 2009-04-14 до самой новой)

Первый формат, bytes=startByte-, доступен только для запросов из версии 2011-08-18 или более новой или из службы эмулятора хранилища пакета SDK версии 1.6 или более новой. Этот диапазон вернет байты, от смещения startByte и до конца BLOB-объекта. Например, чтобы указать диапазон, включающий все байты после первых 256 байт BLOB-объекта, можно передать один из следующих заголовков:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

Заголовок Content-Length в ответе равен числу байтов от смещения и до конца BLOB-объекта. Если использовать диапазон из примера выше для BLOB-объекта размером 1024 байта, то Content-Length будет равно 756.

Если задано правильное смещение, не превышающее общую длину объекта, то запрос возвращает код состояния 206 (частичное содержимое). Если смещение недопустимо и превышает общую длину объекта, то запрос возвращает код состояния 416 (запрошенный диапазон невыполним).

Второй формат, bytes=startByte-endByte, доступен для запросов из всех версий (от 2009-04-14 до самой новой) и для всех версий службы эмулятора хранилища. Этот диапазон возвращает байты от смещения startByte до endByte. Например, чтобы указать диапазон, включающий первые 512 байт BLOB-объекта, можно передать один из следующих заголовков:

  • Range: bytes=0-511

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

Заголовок Content-Length в ответе равен числу байтов между каждым смещением. Если использовать диапазон из примера выше для BLOB-объекта размером 1024 байта, то Content-Length будет равно 512.

Если задано правильное смещение, не превышающее общую длину объекта, то запрос возвращает код состояния 206 (частичное содержимое). Если смещение недопустимо и превышает общую длину объекта, то запрос возвращает код состояния 416 (запрошенный диапазон невыполним).

См. также

Показ:
© 2014 Microsoft