Question

Je veux extraire les fichiers dans un fichier ZIP je téléchargé sur mon application Rails. Les fichiers contenus dans le fichier ZIP vont être stockés dans la base de données.

Je veux ouvrir le fichier ZIP dans mon action, sans avoir à enregistrer le fichier dans un dossier -. Je veux ouvrir le multipart / form-flux de données avec rubyzip

Il ressemble à ZipFile.open de rubyzip ne prend que le nom de fichier -. Pas un flux IO

Que dois-je changer dans rubyzip, pour me permettre d'ouvrir le fichier zip comme un flux, comme ceci:

Zip::ZipFile.open(params["zip_file"]) do |zip_file|
 ...
end

Merci. Joerg

Était-ce utile?

La solution

Utilisation

Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
 ...
end

devrait fonctionner.

Autres conseils

Je vais vous donner quelques conseils que vous ne l'avez pas demandé.

Je conseille vivement que vous n'effectuez cette opération à partir de votre action, car il va bloquer le processus Rails associé à cette requête HTTP aussi longtemps que nécessaire pour effectuer l'extraction. Votre interface utilisateur pour cet utilisateur deviendront des utilisateurs qui ne répond pas et si un nombre suffisant font simultanément (vous limiter la taille de téléchargement de fichiers, non?), Vous avez effectivement une Refus de l'attaque de service en cours contre votre application.

  • Initier l'extraction comme un travail asynchrone d'arrière-plan à partir de votre action.
scroll top