8

回形针默认尝试处理每个图像文件以生成缩略图。但它也尝试使用 pdf 文件来执行此操作,这可能是一项非常耗时的任务。我尝试在 google 上查找并找到了一种解决方案,但它改变了 Paperclip 方法。

如何在 Paperclip 中禁用 pdf 后处理而不更改 Paperclip 源?

4

3 回答 3

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
于 2010-02-17T22:36:07.843 回答
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

于 2010-02-17T22:26:12.097 回答
0

你可以用一行来解决它:

before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} }

不要忘记替换avatar为您的属性(例如:)receipt_content_type

于 2017-04-24T09:15:15.900 回答