如何在Paperclip中禁用pdf文件的后处理?

时间:2010-02-17 17:50:13

标签: ruby-on-rails pdf paperclip

默认情况下,Paperclip会尝试处理每个图像文件以生成缩略图。但它也试图用pdf文件来做,这可能是非常耗时的任务。我尝试在谷歌上找到一个解决方案,但它改变了Paperclip方法。

如何在不改变Paperclip源的情况下在Paperclip中禁用pdf后处理?

3 个答案:

答案 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)。