问题 回形针仅处理图像


我想将单个文件字段用于多种格式。据我所知,Paperclip非常聪明,只能缩放图像并保留其他格式,但这似乎不适用于flv(返回imagemagick / identify-errors)。有没有什么方法可以帮助Paperclip并明确设置特定格式来扩展?

更新: 显然,这些错误可以通过以下方式防止:whiny => false(感谢fl00r),适用于常规上传。 但是,我在这里要做的是通过FTP上传文件,然后在attachment-parameter中使用File.new([:path])创建一个新记录。这就像是图像的魅力,但是:whiny => false-trick将不再这样做了。有人对此有任何提示吗?


8631
2018-03-13 13:33


起源



答案:


:whiny 选项为false:

has_attached_file :my_attach, :whiny => false ...

它不会帮助peparclip仅处理图像,但如果处理失败则不会抛出错误

UPD

仅处理图像:

has_attached_file :file, 
  :styles => lambda{ |a| ["image/jpeg", "image/png"].include?( a.content_type ) ? { :small => "90x90#" } : {}  }

您可以在其中添加内容类型的更多内容 ["image/jpeg", "image/png"] 排列


13
2018-03-13 13:45



似乎有很多帮助,谢谢! - Jpunt
这里有一些更新 - fl00r
是的,这应该有效,非常感谢! - Jpunt
不知怎的,数组包含方法不断抛出“NoMethodError(未定义的方法`每个'为false:FalseClass)”错误,所以我不得不做脏路。但至少它有效,再次感谢。 - Jpunt
看起来这个问题与造型无关 - fl00r


答案:


:whiny 选项为false:

has_attached_file :my_attach, :whiny => false ...

它不会帮助peparclip仅处理图像,但如果处理失败则不会抛出错误

UPD

仅处理图像:

has_attached_file :file, 
  :styles => lambda{ |a| ["image/jpeg", "image/png"].include?( a.content_type ) ? { :small => "90x90#" } : {}  }

您可以在其中添加内容类型的更多内容 ["image/jpeg", "image/png"] 排列


13
2018-03-13 13:45



似乎有很多帮助,谢谢! - Jpunt
这里有一些更新 - fl00r
是的,这应该有效,非常感谢! - Jpunt
不知怎的,数组包含方法不断抛出“NoMethodError(未定义的方法`每个'为false:FalseClass)”错误,所以我不得不做脏路。但至少它有效,再次感谢。 - Jpunt
看起来这个问题与造型无关 - fl00r


您还可以使用paperclip的回调进行图像的后期处理,并指示回形针仅处理图像。如果 before_post_process 回调返回false,处理停止。

    before_post_process :process_only_images

    def process_only_images
     %w(image/jpeg, image/png,image/gif,image/pjpeg, image/x-png).include?(attachment_content_type)
    end

有关详细信息,请查看paperclip的文档 https://github.com/thoughtbot/paperclip#events


3
2017-10-24 00:52



我喜欢这种方法,但代码不太正确:%w(image / jpeg image / png,image / gif image / pjpeg image / x-png).include?(attachment_content_type) - Dan Hixon
你必须要小心,这不是你使用%w声明数组的方式。改用它 %w(image/jpeg image/png image/gif image/pjpeg image/x-png).include?(resource_content_type) - fenec