2015-08-18 97 views
0

我已經繼承了使用Azure存儲客戶端1.7構建的項目,並且正在升級它,因爲微軟已經宣佈從今年12月起將不再支持該項目。檢查Blob是否存在未知Blob類型

引用在Blob存儲中的文件都存儲在一個數據庫具有以下字段:

  1. 文件路徑 - 在形式的字符串 - 在uploadfiles/xxx/yyy/Image-20140117170146.jpg

  2. 了fileURI的形式; https://zzz.blob.core.windows.net/uploadfiles/xxx/yyy/Image-20140117170146.jpg

GetBlobReferenceFromServer將拋出一個異常,如果該文件不存在,這樣看來,你應該如果您知道容器和Blob類型,請使用GetBlockBlobReference

所以我的問題(S):

  • 我可以假設當前上傳(使用StorageClient 1.7)任何斑點會BlockBlobs?
  • ,因爲我需要知道的容器名稱叫GetBlockBlobReference我可以肯定地說,在我上面的容器的例子將永遠是uploadfiles

回答

1

我可以假設當前上傳(使用StorageClient 1.7) 任何斑點將BlockBlobs?

雖然你不能保證通過存儲客戶端庫1.7上傳的斑點是Blob Blobs因爲1.7還支持Page Blobs但是你可以做一些智能猜測100%。例如,如果文件是圖像文件和其他常用文件(pdf,文檔等),則可以假定它們是塊blob。通常你會看到vhd文件上傳爲頁面斑點。同樣,如果這些應用程序是由應用程序的用戶上傳的,那麼它們很可能就是塊blob。

說了這個,我想你應該使用GetBlobReferenceFromServer方法。你可以做的是列出數據庫中的所有斑點,併爲它們中的每一個調用GetBlobReferenceFromServer方法。如果blob存在,那麼你會得到blob類型。如果blob不存在,這個方法會給你一個錯誤。這將是識別數據庫中現有條目的斑點類型的最快方法。如果您願意,您可以將blob類型與現有記錄一起存儲回數據庫中,如果在檢查blob類型時發現塊和頁面斑點,以便將來您需要決定創建CloudBlockBlob還是CloudPageBlob引用時,您可以看看這個領域。

,因爲我需要知道的容器名稱叫GetBlockBlobReference可以 我肯定地說,在我上面的容器的例子將永遠是 uploadfiles

是。在上面列出的示例中,可以說blob容器是upload files