2014-07-07 63 views
3

大家好我使用回形針,Dropbox的寶石> = 1.1.7能夠將圖像上傳到Dropbox的,但不能得到和圖像URL存儲在數據庫

paperclip dropbox gem

那麼這裏是我的屬性:

  • 化身
  • avatar_file_name
  • avatar_content_type
  • avatar_file_size:
  • avatar_updated_at:

,在我的形式: = f.file_field :avatar

並在我的模型 has_attached_file :avatar, :storage => :dropbox, :dropbox_credentials => Rails.root.join("config/dropbox.yml"), :dropbox_visibility => 'public'

然後當我添加圖像,我可以上傳圖片dropbox和 這些屬性有一個值avatar_content_type,avatar_file_size,avatar_updated_at 但它不能存儲上傳的圖像url。請幫忙謝謝!

PS。我正在使用非高級Dropbox帳戶和我們上傳到Dropbox的Apps/my_images文件夾中的圖像。

+0

您可以詳細說明您嘗試存儲的URL以及您無法訪問的原因嗎?上傳到Dropbox的文件並非真正擁有網址,除非您使用/ shares或/ media這樣的API調用來獲得可共享/可流式鏈接。除此之外,你是否得到任何錯誤? – Greg

回答

1

你說得對。它沒有存儲上傳的avatar_url。因爲在「App文件夾」訪問,每當你打電話model_name.avatar.url然後它會每次調用dropbox API,並從此產生的鏈接將只有4個小時有效。所以你不能將這個生成的url存儲到數據庫以及將來使用。在這裏,我將解釋有關訪問類型的Dropbox:

全Dropbox的訪問

文件將被存儲在公共文件夾中。下載URL是可預測的,永遠有效,並且不需要API調用來檢索,但如果您不希望輕鬆訪問您的文件,這可能不是一件好事。當使用一個帳戶存儲多個網站的數據(例如分段和生產實例)時,要確保它們不會踩在彼此的腳趾上。

請注意,2012年10月4日之後創建的帳戶默認情況下未啓用公用文件夾:請轉至此處啓用它。如果您收到文件夾被刪除的消息,只需在名爲Public的根目錄中創建一個文件夾,並且它應該獲得特殊圖標。

應用程序文件夾的訪問

文件將應用下存儲在一個子文件夾(可配置的應用程序設置)。下載URL是通過調用Dropbox API按需生成的,並且僅在4小時內有效。這意味着您的文件的公開程度略低,您可以通過創建多個應用程序來隔離多個網站的數據。

在應用程序文件夾模式下,每個對附件#url的調用都會導致對Dropbox的HTTP請求。這是否可以接受取決於您存儲的內容以及如何將其公開給用戶。

Ref。從here.

如果你想使用Dropbox專業版,那麼使用這個步驟將商店生成的URL存入數據庫。

  • 將avatar_url的遷移添加到db中,然後執行rake db:migrate。

然後將此回調添加到存儲在avatar_url中的數據庫中。

after_commit :add_avatar_url_to_article, on: :create 

private 

def add_avatar_url_to_article 
    self.update_column(:avatar_url, self.avatar.url) 
end 

讓我知道你是否需要其他東西。