2017-06-06 145 views
0

我使用Azure的SAS網址上傳文件到Blob存儲:如何檢查Azure Blob存儲上傳是否成功?

var blockBlob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl)); 
blockBlob.UploadFromFile(filePath); 

文件存在我的硬盤上,而URL應該是正確的,因爲它會自動從Windows應用商店攝入API檢索(並且,如果我稍微更改URL的簽名部分中的一個字符,則使用HTTP 403將上載失敗)。

然而,檢查

var blobs = blockBlob.Container.ListBlobs(); 

結果是Count = 0,所以我想,如果上載成功,是什麼時候?不幸的是,UploadFromFile方法(類似於UploadFromStream方法)沒有返回類型,所以我不知道如何檢索上傳的結果)。

如果我嘗試連接到使用Azure Storage Explorer的SAS URL,上市 BLOB容器失敗,出現錯誤「驗證錯誤。簽名字段格式不正確」。我嘗試使用URL轉義URL的簽名部分,因爲這似乎是在某些類似情況下出現該錯誤的原因,但這並不能解決問題。

有沒有什麼辦法來檢查blob上傳的狀態?有沒有人知道爲什麼自動生成的URL(由微軟的官方API之一提供)無法連接到使用Azure Explorer?

回答

0

請檢查SAS的sp字段。它顯示了你被授權使用blob的權利。例如,sp = rw表示您可以讀取blob並使用此SAS將內容寫入blob。 sp = w意味着您只能使用此SAS將內容寫入Blob。

如果您有閱讀權限,則可以將SAS URL複製到瀏覽器地址欄。瀏覽器將爲您下載或顯示blob內容。

有沒有什麼辦法來檢查blob上傳的狀態?

如果代碼沒有拋出異常,則說明blob已成功上傳。否則,將拋出異常。

try 
{ 
    blockBlob.UploadFromFile(filePath); 
} 
catch(Exception ex) 
{ 
    //uploaded failed 
} 

您還可以使用任何Web調試代理工具(例如Fiddler)來確認它以捕獲存儲服務器的響應消息。 201如果blob已成功上傳,則會返回創建的狀態碼。

enter image description here

大家有一個想法,爲什麼一個自動生成的URL(通過微軟官方的一個API交付)無法連接到使用Azure的瀏覽器?

Azure存儲資源管理器僅允許我們使用SAS連接存儲帳戶或使用SAS連接存儲服務(blob容器,隊列或表)。它不允許我們使用SAS連接blob項目。

+0

感謝 - 不知道我們可以簡單地在瀏覽器中打開SAS網址! – andreask