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 に答える