我需要將文件從一個載波對象複製到另一個載波對象。他們是不同的表格和不同類型的上傳者。將carrierwave文件從一個記錄複製到另一個記錄的正確方法是什麼?
我開始:
user.avatar = image.content
(其中用戶和圖像是模型實例,化身和內容的carrierwave安裝上傳),其有時工作。它似乎一直在本地工作,具有文件存儲功能,但在使用霧和s3時會間歇性地運行。
在mailing list post我發現這個代碼:
user.avatar = image.content.file
一遍,有時工作。
我工作的解決方案迄今:
require "open-uri"
begin
user.avatar = open(image.url)
rescue Errno::ENOENT => e
begin
user.avatar = open(image.path)
rescue Errno::ENOENT => e
# Ok, whatever.
end
end
這不僅難看,但未能通過擴展驗證,因爲遠程打開文件不維護擴展名(JPG,PNG等)。
你是否image image.content.url?我不確定這會起作用,因爲頭像有很多不同的進程需要本地文件才能工作,而且我不希望這兩個記錄都指向同一個文件,我想要一份文件。 – Pablo 2012-03-30 09:44:08
remote_blah_url的工作方式是從本質上「下載」該文件並重新處理該文件。例如,請參閱http://stackoverflow.com/questions/5007575/how-to-assign-a-remote-file-to-carrierwave。 – Ibrahim 2012-11-19 07:52:06
如果圖像未通過HTTP提供,則無法使用。你會得到以下錯誤:'試圖下載一個文件,而不是通過HTTP提供'' – Pioz 2013-07-24 21:32:25