2013-03-29 46 views
2

我已計劃使用Windows Azure存儲來保存Rails應用程序中的blob數據。 我在網上搜索了一個合適的解決方案,並找到了一個名爲waz-storage的寶石。使用Rails(waz-storage gem)將文件存儲在Windows Azure存儲中

conn = WAZ::Storage::Base.establish_connection(:account_name => account_name, :access_key => access_key)

我試圖使用上述嵌段進行連接,該部分被成功執行。但是當我使用命令像下面

WAZ::Blobs::Container.find('test-container')

失敗,並顯示403 Forbidden,我實際使用從我的Windows Azure存儲帳戶獲得的帳戶名和訪問密鑰。

我在做什麼錯?或者如果有更好的解決方案在azure中存儲blob,請建議。

+0

同樣的問題在這裏。當我執行'WAZ :: Blobs :: Container.create('test-container')'時,它實際上在Azure中創建了Container,但是當試圖添加blob時,我一直得到相同的錯誤。尚未找到解決方案... – mmichael

+0

嘗試從真實服務器上傳,而不是從本地主機上傳。它似乎不會從localhost工作。 – balanv

回答

1

我在waz-storage gem issues list中找到了一個解決方案。

首先, '發現' 你要使用的容器(或創建一個如果你願意):

container = WAZ::Blobs::Container.find('name_of_container') 

那麼,試試這個:

open('/absolute_path_to_the_file_you_are_uploading', 'rb') do |f| 
    container.store('name_of_blob', f.read, 'file_type/extension') 
end 

這完美的工作對我來說。祝你好運!

+0

我正在嘗試使用代碼'conn = WAZ :: Storage :: Base.establish_connection!({:account_name => account_name,:access_key => access_key})在本地執行相同操作。 container = WAZ: :Blobs :: Container.find('test')'但它顯示403禁止..我必須在Azure門戶中啓用任何設置嗎? – balanv

+1

是的。在Azure管理門戶中,單擊存儲,然後單擊容器。這將列出你所有的容器。找到你想要上傳到的人,然後點擊它的URL或上次修改(只需突出顯示容器,但不要單擊該名稱)。突出顯示後,點擊底部導航欄中的編輯容器,然後將訪問權限更改爲「公共容器」。這對我來說是訣竅。 – mmichael