2014-02-26 64 views
0

我們是Windows Azure的新手,在開發sitefinity應用程序時使用Windows azure存儲blob對象,但是通過從Visual Studio發佈到Azure上載到此存儲的blob文件僅使用文件名上傳文件,不保留前綴文件夾名稱和斜線。因此,我們必須在Windows Azure管理門戶上手動重命名所有文件,並將文件夾名稱和斜線放在每個文件名的開頭,以便訪問這些圖像的頁面可以正確顯示圖像,否則圖像不會顯示,因爲路徑不正確。 儘管在sitefinity管理面板中,當我們將這些圖像/ blob文件上載到這些頁面中時,我們會將它們上載到一個文件夾中,並且我們已經配置好利用sitefinity來使用azure存儲而不是數據庫。 請檢查附件以查看屏幕截圖。 請幫我解決這個問題。 enter image description hereBlob文件必須手動重命名爲包含父文件夾路徑

回答

1

幾件事我想先提:

  1. 的Windows Azure不支持重命名功能。重命名blob功能=複製blob,然後刪除blob。
  2. 複製blob操作是異步的,所以您必須等待複製操作在刪除blob之前完成。
  3. Blob存儲本身不支持文件夾層次結構。正如你可能已經發現的那樣,你通過在你想要的文件夾名稱(比如圖像)前加上一個blob名稱(比如logo.png)並用斜線(/)分開它們來創建一個文件夾的幻覺,這樣你的blob名字就變成了圖像/logo.png。

現在來到您的問題。不用說手動重命名blob將是一個繁瑣的練習。我會建議使用存儲管理工具來做到這一點。一個這樣的例子是來自Cerebrata的Azure Management Studio。如果您使用該工具,基本上可以做的是在容器中創建一個空文件夾,然後將這些文件移動到該文件夾​​中。對我而言,這將是達到目標的最快方式。

如果你想編寫一些代碼來做到這一點,這裏有步驟,你將需要:

  1. 首先你將會列出所有的blob的blob容器。
  2. 接下來,你將遍歷這個列表。
  3. 對於每個blob(我們稱之爲源blob),您將獲得其名稱並預先設置所需的文件夾名稱,並創建一個對象的實例。
  4. 接下來,您將在這個新的blob上使用StartCopyFromBlob在該blob上啓動一個副本blob操作,其中源是您的源blob。
  5. 您需要等待複製操作完成。一旦複製操作完成,您可以安全地刪除源blob。

P.S.我會寫一些代碼,但不幸的是我被別的東西卡住了。我稍後可能會寫些東西(但請不要屏住呼吸:))。

+0

真棒。非常感謝這一點。將根據您的帖子回覆一次,並且還會考慮管理工作室。 – user1400290

相關問題