2012-02-03 15 views
9

Tengo un cargador de CarrierWave que aceptará una variedad de tipos de archivos. Algunos son tipos de imágenes (por ejemplo, jpg, png) otros no.Tipos de archivos mezclados con CarrierWave

me gustaría crear una versión media del archivo cargado con

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

Como esto sólo funciona para archivos de imagen, ¿cómo puedo distinguir entre imágenes y otros tipos y omitir el cambio de tamaño para los archivos sin imagen ?

Por el momento, CarrierWave intenta procesar el archivo independientemente de su tipo, lo que conduce a un error de procesamiento de MiniMagick si el archivo no es una imagen.

+1

Usted desea utilizar este cargador de videos y audios también? –

+0

Sí. Y PDF. Y TXT. Y EXE. Y ZIP ... – tobiasbayer

+0

Nunca lo intenté, pero ¿qué sucede si comprueba la carga de la extensión de archivo antes del bloque 'versión'? –

Respuesta

13

De acuerdo con la Carrierwave Docs que puede hacer el procesamiento condicional:

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

protected 

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

realidad más completa encontré here

Cuestiones relacionadas