有了Carrierwave和minimagic,我可以测试文件是否可成像吗?

时间:2014-11-12 04:44:25

标签: ruby-on-rails carrierwave minimagick

我有一个文件上传器,用于获取pdf,rft,txt,doc,docx

我想尽可能创建缩略图。
txt文件和pdf的工作非常好用

process resize_to_fill: [150, 150], convert: :jpg 

运行时,doc和docx将失败

Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: MiniMagick::Invalid

我有两个问题。
1.如何在出现错误之前处理此错误?或者至少让用户保存他们的附件,而不是向他们吐痰 2.有没有办法将doc / docx转换为缩略图(而不是调用我们的服务?)

1 个答案:

答案 0 :(得分:0)

要上传文件并仅在可能的情况下创建缩略图,您可以添加conditional processing.的版本然后创建一个检查有效内容类型的方法。

class FileUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  include CarrierWave::MimeTypes 

  version :thumb, if: :imageable? do 
    process resize_to_fill: [150,150]
    process convert: "jpg"
  end

  protected

  def imageable?(new_file)
    is_image = new_file.content_type.start_with? 'image'
    is_pdf = new_file.content_type.end_with? 'pdf'
    is_image || is_pdf
  end
end