Ruby on rails - 无法使用MiniMagick / CarrierWave Uploader进行操作

时间:2012-08-27 13:32:59

标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave uploader

这是我尝试上传不是图片的内容时收到的消息,例如mp3。

  

无法使用MiniMagick进行操作,也许它不是图像?   原始错误:MiniMagick ::无效

所以我试图通过检查文件扩展名来设置条件。只有在不是mp3时才调整大小。

这是我使用CarrierWave的FileUploader:

class FileUploader < CarrierWave::Uploader::Base

include CarrierWave::MiniMagick

...

if File.extname(File.name) != ".mp3"
   process :resize_to_fit => [100, 100]

  version :thumb do
    process :resize_to_fit => [80, 80]
  end

end


...

end 

File.name只提供没有当前文件扩展名的名称。你知道那个为我提供名字+扩展名的变量吗?

编辑:

我在控制器中找到了另一种选择:

 def create
    @myfile = File.new(params[:icon])

    if @myfile.save

        if @myfile.file.file.extension != "mp3"
          @myfile.file.resize_to_fit(100, 100)

          @file.save
        end
     end

但是现在我坚持使用我的CarrierWave FileUploader:

version :thumb do
    process :resize_to_fit => [80, 80]
  end

这太复杂了,我只需要MiniMagick图像

我只需要一个小条件:

如果是file_is_image? ==&GT;调整大小+创建缩略图

其他==&gt;什么都不做

感谢

1 个答案:

答案 0 :(得分:1)

process :resize_to_fit => [100, 100]; :if => :processable?

def processable? upload_name
  File.extname(upload_name.path) != ".mp3"
end