匯出 (0) 列印
全部展開

取得區塊清單

更新日期: 2014年2月

Get Block List 作業可擷取已上傳做為區塊 Blob 一部分的區塊清單。

Blob 使用兩個區塊清單:

  • 認可的區塊清單:此區塊清單使用 放置區塊清單 成功認可至指定的 Blob。

  • 未認可的區塊清單:此區塊清單使用 放置區塊 上傳至 Blob,但尚未經過認可。這些區塊儲存在 Windows 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

選擇性。快照集參數是不透明的 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 的租用目前為作用中。

  • 要求中所指定的租用識別碼與 Blob 中的租用識別碼相符。

如果指定此標頭但不符合任何一項條件,則要求和作業會失敗,並顯示狀態碼 412 (先決條件失敗)。

x-ms-client-request-id

選擇性。提供由用戶端產生的不透明值 (具有 1 KB 的字元限制),當儲存體分析記錄為啟用狀態時,此值會記錄在分析記錄檔中。如果是和伺服器所接收的要求相關的用戶端活動,則強烈建議您使用此標頭。如需詳細資訊,請參閱關於儲存體分析記錄Windows 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 (OK)」。

如需狀態碼的資訊,請參閱狀態和錯誤碼

這項作業的回應包括下列標頭。回應也可能包括其他標準 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

此標頭可唯一識別提出的要求,而且可用來進行要求的疑難排解。如需詳細資訊,請參閱對應用程式開發介面作業進行疑難排解

x-ms-version

指出用於執行要求的 Blob 服務版本。對 2009-09-19 及更新版本提出要求會傳回此標頭。

如果容器使用 2009-09-19 版的 Blob 服務標示公開存取,也會針對未指定版本的匿名要求傳回此標頭。請注意,只有認可的區塊清單可透過匿名要求傳回。

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 參數可指定要傳回的區塊清單。

認可的區塊清單會按照 放置區塊清單 作業當初認可的相同順序傳回。認可的區塊清單中不能有重複的區塊。

您可以使用未認可的區塊清單,判斷 Blob 中遺漏的區塊,以免 Put BlockPut Block List 的呼叫失敗。傳回未認可的區塊清單時,其傳回順序為從最近上傳的區塊開始,一直到最早上傳的區塊為止。如果重複上傳相同的區塊識別碼,清單中只會顯示最近上傳的區塊。

請注意,如果尚未認可 Blob,搭配 blocklisttype=all 呼叫 Get Block List 會傳回未認可的區塊,且 CommittedBlocks 項目為空白。

Get Block List 只適用於區塊 Blob。對分頁 Blob 呼叫 Get Block List 會導致狀態碼 400 (不正確的要求)。

顯示:
© 2015 Microsoft