2012-02-03 7 views
9

私は様々なファイルタイプを受け入れるCarrierWaveアップローダーを持っています。画像タイプ(jpg、pngなど)以外のものもあります。CarrierWaveとのファイルタイプの混合

私は画像や他のタイプを区別し、非画像ファイルのサイズ変更を省略することができますどのように、画像ファイルのこの唯一の作品として

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

にアップロードされたファイルの中のバージョンを作成したいです?

現在、CarrierWaveはファイルの種類にかかわらずファイルを処理しようとしますが、ファイルが画像でない場合はMiniMagick処理エラーが発生します。

+1

を見つけましたか? –

+0

はい。そしてPDF。そしてTXT。そしてEXE。そしてZIP ... – tobiasbayer

+0

私はそれを試したことはありませんが、 'version'ブロックの前にファイル拡張子をアップロードすることをチェックすればどうなりますか? –

答えて

13

Carrierwave Docsあなたが条件処理を行うことができますによると:

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

protected 

def image?(new_file) 
    new_file.content_type.include? 'image' 
end 

実際にはより多くの完全な答えを、私はあなたがあまりにもビデオやオーディオのために、このアップローダーを使用したいhere

関連する問題