CarrierWave的混合文件类型



我有一个CarrierWave上传器,它可以接受各种文件类型。有些是图像类型(例如jpg、png),有些则不是。

我想用创建上传文件的中等版本

version :medium do
  process :resize_to_fit => [300, 300]
end

由于这只适用于图像文件,我如何区分图像和其他类型,并省略非图像文件的大小调整?

目前CarrierWave尝试处理文件,而不管文件的类型如何,如果文件不是图像,则会导致MiniMagick处理错误。

根据Carrierwave文档,您可以进行条件处理:

version :medium, :if => :image? do
  process :resize_to_fit => [300, 300]
end
protected
def image?(new_file)
  new_file.content_type.include? 'image'
end

事实上,我在这里找到了更完整的答案

最新更新