2012-02-03 14 views
9

Ho un uploader CarrierWave che accetta una varietà di tipi di file. Alcuni sono tipi di immagini (ad esempio jpg, png) altri no.Tipi di file misti con CarrierWave

vorrei creare una versione media del file caricato con

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

Come questo funziona solo per i file di immagine, come posso distinguere tra le immagini e altri tipi e omettere il ridimensionamento per i file non-immagine ?

Al momento CarrierWave tenta di elaborare il file indipendentemente dal suo tipo che porta a un errore di elaborazione MiniMagick se il file non è un'immagine.

+1

Si desidera utilizzare questo uploader per video e audio anche? –

+0

Sì. E PDF. E TXT. E EXE. E ZIP ... – tobiasbayer

+0

Non l'ho mai provato, ma cosa succede se controlli il caricamento dell'estensione del file prima del blocco 'version'? –

risposta

13

Secondo il Carrierwave Docs si può fare l'elaborazione condizionale:

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

protected 

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

realtà più completa che ho trovato here

Problemi correlati