La apertura de un archivo ZIP multipart / form-data con rubyzip
-
11-09-2019 - |
Pregunta
Quiero extraer los archivos dentro de un archivo ZIP he subido a mi aplicación Rails. Los archivos dentro del archivo ZIP van a ser almacenados en la base de datos.
Quiero abrir el archivo ZIP en mi acción, sin tener que guardar el archivo en una carpeta -. Quiero abrir la corriente multipart / form-data con rubyzip
Parece que ZipFile.open de rubyzip sólo toma un nombre de archivo. - no una corriente IO
¿Qué necesito para cambiar dentro rubyzip, para permitir que abra el archivo zip como una corriente, como esto:
Zip::ZipFile.open(params["zip_file"]) do |zip_file|
...
end
Gracias. Joerg
Solución
Uso
Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
...
end
debería funcionar.
Otros consejos
Voy a darle algunos consejos que usted no ha solicitado.
Yo aconsejaría fuertemente que no se realiza esta operación desde el interior de su acción, porque va a bloquear el proceso de rieles asociado con esa petición HTTP durante el tiempo que se tarda en realizar la extracción. Su interfaz de usuario para que el usuario dejará de responder y si suficientes usuarios hacen esto al mismo tiempo (que se limita el tamaño de carga de archivos, ¿verdad?) Entonces usted tiene efectivamente un denegación de servicio ataque pasando en contra de su aplicación.
- Iniciar la extracción como un trabajo en segundo plano asíncrona desde dentro de su acción.