2013-12-07 32 views
2

我在網上瀏覽了很多東西。我認爲回形針可能是我最大的希望。但我不知道如何使用它將圖像文件從Rails 4上傳到MySQL數據庫中。 是的,我知道將它加載到文件夾中更好,但我需要將它加載到數據庫中。 所以,如果你能幫助我,將不勝感激。Rails 4如何將圖像加載到數據庫中作爲blob

謝謝

+1

爲什麼把圖像放在數據庫中?根本沒有理由 – Phlip

+0

它是項目的要求。我知道上傳到一個文件夾會更好。 – morfious902002

+0

然後忽略「你只存儲文本...在你的數據庫中」的答案,並將圖像存儲在一個BLOB中。但沒有比「這是項目的要求」更多的信息,實際上很難提供幫助。 – Phlip

回答

1

我認爲你要與圖片上傳和Rails是如何工作的困惑(特別是與Paperclip/Carrierwave)。我將解釋他們是如何爲你工作:


你只存儲文本&引用在您的數據庫(無圖像)

MYSQL &的Rails只存儲在文本數據庫,沒有別的。該應用程序的工作方式是採取數據的數據表&內,然後與其它代碼&資產在你的應用程序鏈接它,使之共同努力

回形針& Carrierwave不將圖像存儲在您的數據庫;他們將它們存儲在Rails應用程序的/public/system文件夾中(如果要將它們放在那裏,則在S3上)。然後他們通過將其名稱存儲在數據庫中鏈接到圖像。這就是它

當你要加載的圖像(使用回形針爲例),你實際使用的ActiveRecord加載image數據表中的內容,並回形針會創建自己的ActiveRecord對象關閉它的背面


回形針或者Carrierwave會幫助你

你應該看看this Railscast,它會幫助你很多: RailsCast

+0

這是一個後來由教授改變的作業要求。 – morfious902002

5

您不需要carrierwavepaperclip上傳寶石來將圖像存儲爲blob。

下面是一個例子如何,你可以在二進制字段(raw_file

形式的圖像存儲:

<%= form_for @user do |f| %> 
    <%= f.file_field :avatar %> 
<% end %> 

控制器:

def create 
    @user = User.new(params[:user]) 
    # store uploaded avatar as blob 
    @user.raw_file = params[:user][:avatar].read 
    @user.save 
end 

使用RMagickmini_magick轉換圖像從blob。

相關問題