代码之家  ›  专栏  ›  技术社区  ›  klew

如何禁用回形针中PDF文件的后处理?

  •  8
  • klew  · 技术社区  · 14 年前

    默认情况下,回形针尝试处理每个图像文件以生成缩略图。但它也尝试使用PDF文件,这可能是一项非常耗时的任务。我试着在谷歌上寻找一个解决方案,但它改变了回形针的方法。

    如何在不更改回形针源的情况下禁用回形针中的PDF后处理?

    3 回复  |  直到 7 年前
        1
  •  16
  •   Toby Hede    14 年前

    从我当前的生产应用程序,类似于上面,但显式地查找图像(在本例中,我的上载程序几乎接受任何类型的文件,因此我只处理图像,而忽略所有其他文件):

    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
    
        2
  •  2
  •   klew    14 年前

    一种解决方案是使用 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 .

        3
  •  0
  •   Lucas Caton    7 年前

    你可以用一条线来解决它:

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

    别忘了更换 avatar 具有您的属性(例如: receipt_content_type )