簡體   English   中英

通過REST API在BlockBlob上設置Azure元數據

[英]Set Azure Metadata on BlockBlob via REST API

我想使用Azure REST API在Azure的Blob上設置一些自定義元數據屬性。 文件上傳正常(也可以通過REST API完成)。 要設置自定義元數據,我按照以下說明進行操作 示例URL可以是:

(PUT方法) https://myaccount.blob.core.windows.net/ph0wzj1k4dbuwfusyqw38z2jgfk5p56bfnlj5/a5bc77a8d4d34edeb6d3212fc6bbd8a9.jpg?sv=2014-02-14&sr=c&si=BlobContain

具有以下請求標頭:

x-ms-meta-ologicname:20141028_064011.jpg

無論我是通過jquery ajax還是通過Fiddler來運行此url,我總是得到相同的結果:調用似乎成功了(我得到了200狀態代碼),但是如果然后我檢查了Blob元數據(使用C#代碼),則找不到密鑰並且元數據為空。

相反,如果我使用C#進行所有操作,則可以根據需要設置並獲取Blob上的任何元數據。

示例C#代碼(現已運行):

var blobs = container.ListBlobs(null, true, BlobListingDetails.Metadata).Cast<CloudBlockBlob>();
foreach (var blob in blobs) {
    Console.WriteLine(blob.Metadata["logicalname"]);
}

如您所見,我已經在URL中而不是在請求標頭中輸入了我的共享訪問簽名(如說明所示),但是我懷疑這是問題所在,因為在上載和其他操作(也包括表存儲)上,一切正常。

難道我做錯了什么? (顯然是的,但是什么?... :))

解決了:

使用Azure Storage Explorer進行調查我看到正確設置了元數據,並且在那里,只是沒有通過C#檢索它。 感謝Gaurav的建議,我已經編輯了我發布的C#代碼示例,現在正在檢索通過REST API設置的元數據。

元數據已存在,但由於尚未獲取而無法看到它。 您可以做的就是更改ListBlobs()調用。 假設您使用的是最新版本的存儲客戶端庫,則可以執行以下操作:

var blobs = container.ListBlobs(null, true, BlobListingDetails.Metadata).Cast<CloudBlockBlob>();

這將填充元數據以及其他屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM