我已经实现了CarrierWave为我的应用程序中的用户上传个人资料图片以及MiniMagick以调整多个版本的大小。
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb_card do
process :resize_to_fit => [190, 210]
end
version :thumb_profile, from_version: :thumb_card do
process :resize_to_fit => [100, 100]
end
version :thumb, from_version: :thumb_card do
process :resize_to_fit => [60, 60]
end
def extension_white_list
%w(jpg jpeg gif png)
end
def content_type_whitelist
/image\//
end
end
user.rb
mount_uploader :image, ImageUploader
还添加了:允许的user_params中的图像。
html.erb
<%= image_tag(current_user.image.thumb_profile.url, { :alt=> 'Image',
:id=>'avatar_img' ,:style=>'padding-top: 5px;' }) if current_user.image? %>
<%= user.file_field :image %>
所有这一切都在本地服务器上完美运行。但是当我推送到我的EC2实例时,图像无法上传并且每个事务都被回滚
错误
User Exists (1.5ms) SELECT 1 AS one FROM `users` WHERE
`users`.`email` = 'test3@example.com' AND (`users`.`id` != 4) LIMIT 1
User Exists (1.4ms) SELECT 1 AS one FROM `users` WHERE
`users`.`phone` = '431 532 5413' AND (`users`.`id` != 4) LIMIT 1
(1.3ms) ROLLBACK
无法在EC2服务器上找到public / assets / uploads文件夹。 我想在上传成功之前它不会生成?
希望有人指出为什么确切的代码在本地工作,但不能直播? TIA。
答案 0 :(得分:0)
<强>固定强>
通过EC2实例上的rails控制台进行一些调试后,找出图像未上传的原因。
关注此链接
这是一个MiniMagick问题。卸载它并重新安装它没有成功。猜猜有一些依赖。未在EC2上正确安装。在rails控制台中出现此错误。
original error imagemagick/graphicsmagick is not installed
这个命令起到了作用。
sudo yum install ImageMagick