Problema de PaperClip al detectar los mimetypes de los ficheros adjuntos

Bueno… o no escribo en una temporada, o no os dejo en paz🙂

Hoy os traigo otra “solución” que hemos tenido que aplicar en el trabajo, ya que en una aplicación teníamos que comprobar que el adjunto que se mandaba tenía una determinada extensión pero la validación de paperclip:

validates_attachment_content_type [adjunto], :content_type=>[‘mimetype_que_queremos’], :message=>:mensaje_de_error

sólo funcionaba bien con los navegadores de OS X pero fallaba con los de Windows (en Linux no he probado), ya que en nuestro caso queríamos que el archivo fuera un .zip (mimetype=application/zip) y los navegadores de Windows nos mandaba el mimetype application/octect-stream y claro… la validación no servía. Lo hemos solucionado quitando en el modelo en cuestión dicha validación y añadiendo lo siguiente:

VALID_CONTENT_TYPES = [“lista_de_mimetypes_deseables_entre_comillas_y_separadas_por_comas”]

before_validation do |nombre_del_modelo|
if nombre_del_modelo.attachment_content_type == ‘application/octet-stream’
mime_type = MIME::Types.type_for(nombre_del_modelo.attachment_content_type)
nombre_del_modelo.attachment_content_type = mime_type.first.content_type if mime_type.first
end
end

validate :attachment_content_type_is_right

def attachment_content_type_is_right
errors.add(:attachment, :filetype) unless VALID_CONTENT_TYPES.include?(self.attachment_content_type)
end

Yo creía que poco se podía hacer, pero mirad por dónde sí que se puede🙂

 

Acerca de

Ingeniero Informático. RoR Developer

Publicado en Informática, Ruby on Rails
One comment on “Problema de PaperClip al detectar los mimetypes de los ficheros adjuntos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: