默认情况下,Paperclip会尝试处理每个图像文件以生成缩略图。但它也试图用pdf文件来做,这可能是非常耗时的任务。我尝试在谷歌上找到一个解决方案,但它改变了Paperclip方法。
如何在不改变Paperclip源的情况下在Paperclip中禁用pdf后处理?
答案 0 :(得分:16)
从我当前的制作应用程序,与上面类似,但显式查找图像(在这种情况下,我的上传器几乎接受任何类型的文件,因此我只处理图像而忽略所有其他图像):
before_post_process :is_image?
def is_image?
["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type)
end
答案 1 :(得分:2)
一种解决方案是使用before_post_process
回调:
# Model with has_attached_file
before_post_process :forbid_pdf # should be placed after line with has_attached_file
private
def forbid_pdf
return false if (data_content_type =~ /application\/.*pdf/)
end
data_content_type
应更改为模型中的相应字段。
我提出的另一个解决方案是为图像创建自定义处理器,我们应该在其中检查文件类型,如果不是pdf,则运行标准处理器Paperclip::Thumbnail
。
答案 2 :(得分:0)
你可以用一行来解决它:
before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} }
不要忘记将avatar
替换为您的属性(例如:receipt_content_type
)。