我正在使用CarrierWave + rmagick gems将图像上传到服务器。当我上传普通文件时,一切都很顺利。但是当我上传格式错误的文件时,表单错误不会显示CarrierWave错误,它会显示运行rmagick时出现的错误。
一个简单的例子。我有User
模型,里面有一个上传者:
class User < ActiveRecord::Base
...
mount_uploader :avatar, PictureUploader
end
(avatar
是一个字符串field
)
现在,上传者在这里定义:
class BaseImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
def extension_white_list
%w(jpg jpeg gif png)
end
end
class PictureUploader < BaseImageUploader
def default_url
'placeholder.png'
end
def store_dir
'images/pictures'
end
version :thumb do
process resize_to_fit: [50, 50]
end
version :medium do
process resize_to_fill: [400, 400]
end
version :small_square do
process resize_to_fill: [200, 200]
end
end
然后我创建了一个空文件,例如touch ~/Desktop/file.jpg
,并尝试通过表单上传,这里我收到验证错误:
Avatar Failed to manipulate with rmagick, maybe it is not an image? Original Error: Empty input file `<foldername>/public/uploads/tmp/1470905765-10111-5893/thumb_file.jpg' @ error/jpeg.c/JPEGErrorHandler/322
我尝试使用ming_magick而不是rmagick,但结果是一样的(错误信息略有不同)
我可以做些什么来改变此验证消息,说出Avatar Your image is invalid
而不是默认值吗?
答案 0 :(得分:0)
errors.messaging.rmagick_processing_error: "Error processing image"