我正在使用Paperclip gem来管理Rails 3应用程序中的文件上传。我刚刚添加了
validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif'], :message => "should be \"PNG, GIF, or JPG\""
到我的模型,似乎有效,除了我在上传的图像上调用了4个样式,即使验证失败,它们似乎也被调用了。
以下是返回的验证错误...
Logo content type should be "PNG, GIF, or JPG" Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
Logo /var/folders/cT/cTTe57AGGBiLXq0PUS+RBU+++TI/-Tmp-/stream20110509-3068-ti9gja.doc is not recognized by the 'identify' command.
如何停止处理(或尝试这样做)样式?
不确定是否重要,但图片存储在亚马逊s3中。
答案 0 :(得分:0)
似乎这是Paperclip中的一个已知问题,没有人修复过。有一个Github issue on it但它已关闭。
另一种方法是使用before_post_process
验证类型。有点像:
class Foobar
before_post_process :check_content_type
def check_content_type
return ['image/jpeg', 'image/png', 'image/gif'].include?(logo.file_type)
end
end
如果文件不适合这些内容类型,则应停止处理。