你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

指定 Blob 服务操作的范围标头

有几个 Blob 服务 GET 操作支持使用标准 HTTP Range 标头。 许多 HTTP 客户端(包括 .NET 客户端库)将标头的大小 Range 限制为 32 位整数,因此其值上限为 4 GiB。 由于块 Blob 和页 Blob 的大小都可能大于 4 GiB,因此 Blob 服务接受任何采用 HTTP Range 标头的操作的自定义范围标头x-ms-range

一些 HTTP 客户端(包括 Microsoft Silverlight 库)限制访问 Range 标头。 x-ms-range 标头也可用于绕过这些限制。

如果在请求中指定 x-ms-range 标头,则服务将使用 x-ms-range 指定的范围,否则使用 Range 标头指定的范围。

备注

如果设置 Range 对象的 PutPageProperties 属性,Azure 存储客户端库将自动处理请求中相应范围标头的设置。

范围标头格式

BLOB 服务对于 Rangex-ms-range 标头接受两个字节的范围。 对于这些标头,字节范围必须遵守以下格式:

  • 对于使用 2011-08-18 或更新版本的请求,bytes=startByte-

  • 对于使用所有版本(2009-04-14 到最新版本)的请求,bytes=startByte-endByte

格式 1:bytes=startByte-

第一个格式 bytes=startByte- 仅可用于使用版本 2011-08-18 或更新版本的请求,或 SDK 1.6 或更新版本的存储模拟器服务。 此范围将返回从偏移量 startByte 起到 Blob 结尾的字节。 例如,要指定包含自一个 Blob 的前 256 个字节之后所有字节的范围,可以在以下任一标头中传递:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

响应中的 Content-Length 标头等于从偏移量起到 Blob 结尾的字节数。 使用上面的示例范围,对于长度为 1,024 字节的 Blob, Content-Length 将为 756。

如果偏移量有效,且未超过 Blob 的总长度,则请求将返回状态代码 206(部分内容)。 如果偏移量无效且超过 Blob 的总长度,则请求将返回状态代码 416(无法满足请求的范围)。

格式 2:bytes=startByte-endByte

第二种格式 bytes=startByte-endByte 可用于使用所有版本(2009-04-14 到最新版本)的请求以及所有版本的存储模拟器服务。 此范围将返回从偏移量 startByte 起到 endByte 的字节。 例如,要指定包含 Blob 前 512 字节的范围,可在以下任一标头中传递:

  • Range: bytes=0-511

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

响应中的 Content-Length 标头等于每两个偏移量之间的字节数。 如果对一个长度为 1,024 的 Blob 使用以上示例范围,则 Content-Length 将是 512。

如果偏移量有效,且未超过 Blob 的总长度,则请求将返回状态代码 206(部分内容)。 如果偏移量无效且超过 Blob 的总长度,则请求将返回状态代码 416(无法满足请求的范围)。

另请参阅

Blob 服务概念
Azure 存储服务的版本控制