Pregunta

Tengo una aplicación de rubí en la que los freelancers pueden completar los trabajos para un empleador.Cuando se complete el trabajo, el Freelancer puede cargar archivos para que el empleador revise.Creo que el freelancer debería poder cargar archivos ZIP, pero no quiero que el Freelancer pueda cargar archivos ZIP no válidos o corruptos.¿Hay alguna forma de detener esto o verificar si un archivo es válido?Estoy bastante seguro de si hay un método o función para hacer esto, estará en la biblioteca de Rubyzip, pero he visto su documentación y no puedo encontrar lo que estoy buscando.

¿Fue útil?

Solución

Aquí hay una solución ingenua que intenta abrir un archivo ZIP, devolviendo true si funciona y false si se produjo un error:

require 'zip'

def valid_zip?(file)
  zip = Zip::File.open(file)
  true
rescue StandardError
  false
ensure
  zip.close if zip
end

Creo que el formato ZIP incluye las sumas de suma de comprobación CRC32 de sus contenidos.Si realmente necesita que sea super rápido, podría leerlos fuera del archivo y verificar con la suma de comprobación que ha computado.

Otros consejos

Otra forma fácil sería simplemente consultar con esta condición, si se está cargando el archivo.

file = params[:file]

file.content_type.in?(['application/zip'])

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top