回形针默认尝试处理每个图像文件以生成缩略图。但它也尝试使用 pdf 文件来执行此操作,这可能是一项非常耗时的任务。我尝试在 google 上查找并找到了一种解决方案,但它改变了 Paperclip 方法。
如何在 Paperclip 中禁用 pdf 后处理而不更改 Paperclip 源?
回形针默认尝试处理每个图像文件以生成缩略图。但它也尝试使用 pdf 文件来执行此操作,这可能是一项非常耗时的任务。我尝试在 google 上查找并找到了一种解决方案,但它改变了 Paperclip 方法。
如何在 Paperclip 中禁用 pdf 后处理而不更改 Paperclip 源?
从我当前的生产应用程序中,类似于上面,但明确查找图像(在这种情况下,我的上传器几乎接受任何类型的文件,所以我只处理图像并忽略所有其他文件):
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
一种解决方案是使用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
。
你可以用一行来解决它:
before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} }
不要忘记替换avatar
为您的属性(例如:)receipt_content_type
。