Das Öffnen einer multipart / form-data ZIP-Datei mit rubyzip
-
11-09-2019 - |
Frage
Ich möchte die Dateien in einer ZIP-Datei extrahieren ich meine Rails-Anwendung hochgeladen. Die Dateien in der ZIP-Datei werden in der Datenbank gespeichert werden.
Ich mag die ZIP-Datei in meiner Aktion öffnen, ohne zuerst die Datei in einen Ordner speichern zu müssen -. Ich den multipart / form-Datenstrom mit rubyzip öffnen möchte
Es sieht aus wie rubyzip der ZipFile.open nur einen Dateinamen nimmt -. Keine IO-Stream
Was muss ich innerhalb rubyzip ändern, mir zu erlauben, die Zip-Datei als Stream zu öffnen, wie folgt aus:
Zip::ZipFile.open(params["zip_file"]) do |zip_file|
...
end
Danke. Joerg
Lösung
Mit
Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
...
end
sollte funktionieren.
Andere Tipps
Ich werde dir einen Rat geben, die Sie nicht gebeten haben.
würde ich dringend empfehlen, dass Sie diesen Vorgang nicht ausführen aus Ihrer Aktion, weil es den Rails Prozess mit der HTTP-Anforderung so lange verbunden ist blockiert, da sie die Extraktion durchzuführen nimmt. Ihre UI für den Benutzer wird nicht mehr reagiert und wenn genügend Nutzer dies tun gleichzeitig (Sie begrenzen die Datei-Upload-Größe, nicht wahr?), Dann haben Sie effektiv bekam eine Denial of Service Angriff gegen Ihre Anwendung geht.
- Starten Sie die Extraktion als asynchrone Hintergrundjob aus Ihrer Aktion.