Apertura di un file multipart / form-data ZIP con rubyzip
-
11-09-2019 - |
Domanda
Voglio estrarre i file all'interno di un file ZIP ho caricato al mio Rails app. I file all'interno del file ZIP stanno per essere memorizzati nel database.
voglio aprire il file ZIP nella mia azione, senza dover prima salvare il file in una cartella -. Voglio aprire il flusso multipart / form-data con rubyzip
Sembra che ZipFile.open di rubyzip richiede solo un nome di file -. Non un flusso IO
Di cosa ho bisogno di cambiare entro rubyzip, per permettere a me di aprire il file zip come un flusso, in questo modo:
Zip::ZipFile.open(params["zip_file"]) do |zip_file|
...
end
Grazie. Joerg
Soluzione
con
Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
...
end
dovrebbe funzionare.
Altri suggerimenti
ho intenzione di darvi alcuni consigli che non avete chiesto.
vi consiglio caldamente che non si esegue questa operazione da dentro la vostra azione, perché sarà bloccare il processo di Rails associato a tale richiesta HTTP per tutto il tempo necessario per eseguire l'estrazione. L'interfaccia utente per l'utente diventerà non risponde e se un numero sufficiente gli utenti fanno contemporaneamente (si sta limitando la dimensione di caricamento file, giusto?) Allora hai effettivamente ottenuto un Denial of Service attacco in corso contro la vostra applicazione.
- Iniziare l'estrazione come un processo in background asincrono da dentro la vostra azione.