我在网上搜索了很多,我认为Paperclip可能是我的最佳选择。但我不知道如何使用它将图像文件从Rails 4上传到MySQL数据库中。
是的,我知道将其加载到文件夹中更好,但我需要将其加载到数据库中。
因此,如果您能帮助我,将不胜感激。
谢谢
谢谢
carrierwave
或paperclip
上传gems来将图像存储为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
使用 RMagick 或 mini_magick 将图像从 blob 转换。
我觉得你对Rails中的图片上传方式(特别是Paperclip/Carrierwave)有些混淆了。我会为你解释一下它们是如何工作的:
你的数据库中只存储文本和引用(不包括图片)
MYSQL 和 Rails 只在数据库中存储文本,不会存储其他内容。应用程序的工作方式是将数据表中的数据与应用程序中的其他代码和资源链接起来,以使其共同运作。
Paperclip 和 Carrierwave 不会将图像存储在数据库中,它们将它们存储在 Rails 应用程序的 /public/system
文件夹中(如果您希望将它们放在 S3 上,则可以这样做)。然后,它们通过在数据库中存储图像名称来链接到图像。就是这样。
当您想要加载图像时(例如使用 Paperclip),实际上您将使用 ActiveRecord 加载 image
数据表的内容,而 Paperclip 将根据其创建自己的 ActiveRecord 对象。
使用Paperclip或CarrierWave会帮助你
你应该查看这个Railscast,它会给你很大的帮助: