销售电话: 1-800-867-1380

获取块列表

更新时间: 2014年2月

Get Block List操作检索作为块 Blob 的一部分上载的块列表。

为 Blob 保留了两个块列表:

  • 已提交的块列表:已使用 放置块列表 成功提交到给定 Blob 中的块列表。

  • 未提交的块列表:已使用 Put Block 为 Blob 上载但尚未提交的块列表。这些块存储在 Azure 中并与 Blob 关联,但尚未构成 Blob 的一部分。

你可以调用Get Block List以返回已提交的块列表和/或未提交的块列表。也可以调用此操作以检索快照的已提交块列表。

可以按如下方式构建Get Block List请求。建议使用 HTTPS。将 myaccount 替换为你的存储帐户名称:

 

  GET 方法请求 URI HTTP 版本

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

HTTP/1.1

在针对模拟的存储服务发出请求时,请将模拟器主机名和 BLOB 服务端口指定为 127.0.0.1:10000,后跟模拟的存储帐户名称:

 

  GET 方法请求 URI HTTP 版本

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist

HTTP/1.1

有关详细信息,请参阅使用 Azure 存储模拟器进行开发和测试

可以在请求 URI 上指定以下附加参数。

 

URI 参数 说明

snapshot

可选。snapshot 参数是一个不透明的 DateTime 值;如果存在,则指定要检索的 Blob 列表。有关处理 Blob 快照的详细信息,请参阅创建 Blob 的快照

blocklisttype

指定是返回已提交的块列表,返回未提交的块列表,还是同时返回这两个列表。有效的值为 committeduncommittedall。如果省略此参数,则Get Block List返回已提交的块列表。

timeout

可选。timeout 参数以秒表示。有关详细信息,请参阅为 BLOB 服务操作设置超时

下表介绍必需的和可选的请求标头。

 

请求标头 说明

Authorization

必需。指定身份验证方案、帐户名和签名。有关详细信息,请参阅Azure 存储服务身份验证

Datex-ms-date

必需。为请求指定协调世界时 (UTC)。有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

对于所有验证的请求是必需的,对于匿名请求是可选的。指定用于此请求的操作的版本。有关详细信息,请参阅Azure 存储服务版本化

x-ms-lease-id:<ID>

可选。如果指定了此标头,只有在符合下面的两个条件时,才会执行此操作:

  • Blob 的租约当前处于活动状态。

  • 在请求中指定的租约 ID 与 Blob 的租约 ID 匹配。

如果指定了此标头并且不符合这两个条件,请求将失败,并且此操作失败并返回状态代码 412(前提条件失败)。

x-ms-client-request-id

可选。提供客户端生成的、附带 1 KB 字符限制的模糊值,在启用存储分析日志记录时,将在分析日志中记录该值。强烈建议使用此标头将客户端活动与服务器接收的请求相关联。有关详细信息,请参阅关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

无。

以下示例请求 URI 为名为 MOV1.avi 的 Blob 返回已提交的块列表:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1

以下示例请求 URI 返回已提交的块列表和未提交的块列表:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1

以下示例请求 URI 返回快照的已提交块列表。请注意,快照仅包含已提交的块,因此,它没有关联的未提交块。

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z

响应包括 HTTP 状态代码、一组响应标头以及包含块列表的响应正文。

此操作成功后返回状态代码 200(正常)。

有关状态代码的信息,请参阅状态和错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

Last-Modified

上次修改 Blob 的日期/时间。日期格式遵循 RFC 1123。有关详细信息,请参阅标头中日期/时间值的表示。只有在 Blob 已提交块时,才会返回此标头。

修改 Blob 的任何操作将会更改 Blob 的上次修改时间,包括更新 Blob 的元数据或属性。

ETag

Blob 的 ETag。只有在 Blob 已提交块时,才会返回此标头。

Content-Type

Blob 的 MIME 内容类型。默认值为 application/xml

x-ms-blob-content-length

Blob 大小(字节)。

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。有关详细信息,请参阅API 操作故障排除

x-ms-version

指示用于执行请求的 BLOB 服务的版本。针对 2009-09-19 和更高版本发出的请求将返回此标头。

如果使用 BLOB 服务的 2009-09-19 版将容器标记为公共访问,则也会为未指定版本的匿名请求返回此标头。请注意,只能通过匿名请求返回已提交的块列表。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

此操作还支持仅当满足指定条件时才使用条件标头获取阻止列表。有关详细信息,请参阅为 Blob 服务操作指定条件标头

仅返回已提交的块的请求响应正文格式如下所示:

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  <CommittedBlocks>
</BlockList>

返回已提交和未提交的块的请求响应正文格式如下所示:


<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
     <Block>
        <Name>base64-encoded-block-id</Name>
        <Size>size-in-bytes</Size>
     </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  </UncommittedBlocks>
 </BlockList>

在以下示例中,blocklisttype 参数设置为 committed,因此,仅在响应中返回 Blob 的已提交的块。

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:33:19 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
</BlockList>

在此示例中,blocklisttype 参数设置为 all,因此,在响应中返回 Blob 的已提交的块和未提交的块。

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:35:56 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>BlockId003</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024000</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

在下一示例中,blocklisttype 参数设置为 all,但尚未提交 Blob,因此,CommittedBlocks 元素是空的。

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Wed, 14 Sep 2011 00:40:22 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks />
  <UncommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId003</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

如果容器的 ACL 设置为允许匿名访问,则任何客户端都可以调用 Get Block List;但只能公开访问已提交的块。仅限帐户所有者以及使用有权读取此 Blob 或其容器的共享访问签名的任何人可以访问未提交的块列表。

可以调用Get Block List以返回已提交到块 Blob 的块列表和/或尚未提交的块列表。请使用 blocklisttype 参数指定要返回的块列表。

已提交的块列表的返回顺序与放置块列表操作提交块的顺序相同。不会在已提交的块列表中多次显示任何块。

如果Put BlockPut Block List调用失败,则可以使用未提交的块列表来确定 Blob 中缺少哪些块。返回的未提交的块列表从最近上载的块开始,一直到最早上载的块。如果多次上载某个块 ID,则在列表中仅显示最近上载的块。

请注意,如果尚未提交 Blob,使用 blocklisttype=all 调用Get Block List将返回未提交的块,并且 CommittedBlocks 元素是空的。

Get Block List 仅适用于块 Blob。在页 Blob 上调用Get Block List将导致返回状态代码 400(错误的请求)。

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft