0

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

使用 MiniMagick 操作失败,可能不是图像?原始错误:MiniMagick::Invalid

所以我试图通过检查文件扩展名来设置条件。仅在不是 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?==> 调整大小 + 创建缩略图

否则 ==> 什么也不做

谢谢

4

1 回答 1

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

def processable? upload_name
  File.extname(upload_name.path) != ".mp3"
end
于 2012-08-27T13:40:47.080 回答