À l'aide de rubyzip pour ajouter des fichiers et des répertoires imbriqués à un zipoutputstream
Je suis aux prises avec l'obtention de rubyzip pour ajouter des répertoires à un zipoutputstream. (Je veux le flux de sortie afin que je puisse l'envoyer à partir d'un rails de contrôleur). Mon code suit cet exemple:
http://info.michael-simons.eu/2008/01/21/using-rubyzip-to-create-zip-files-on-the-fly/
Lorsqu'ils sont modifiés pour inclure des répertoires dans la liste des fichiers à ajouter, j'obtiens l'erreur suivante:
Toute aide serait grandement appréciée.
Mise à JOUR
Après avoir essayé un certain nombre de solutions, j'ai eu plus de succès avec zipruby qui a un nettoyage de l'api et de bons exemples: http://zipruby.rubyforge.org/.
Grande recherche d'emploi zipruby, a sauvé ma journée!
OriginalL'auteur fturtle | 2010-02-24
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur Macario
OOOOOuuuhh...vous voulez absolument ZIPPY. C'est un des Rails de plugin qui fait abstraction de beaucoup de la complexité dans rubyzip, et permet de créer ce que vous êtes en train de parler, y compris les répertoires (de ce que je me souviens).
Ici, vous allez:
http://github.com/toretore/zippy
Et directe de l'zippy site:
modifier: - la modification par l'utilisateur commentaire:
Hmm...tout l'objectif de l'aide de Zippy est pour en faire un ensemble beaucoup plus facile à utiliser ruby zip.
Ya voudrez peut-être prendre une seconde (ou première)...
Voici comment faire un répertoire avec des répertoires:
fixe la réponse dans le cas où vous êtes intéressé.
Désolé, mais j'ai trouvé ce petit bijou d'être un travail assez dur. Il y en a quelques autres, je vais essayer de diffuser un nouveau zip de la manière que je veux.
Coolio...bonne chance! 🙂
Zippy a l'air sympa mais il y a vraiment pas de docs. Savez-vous tous les liens vers des exemples de code? Votre exemple de la création (vide) les annuaires est un bon début, mais ce que je veux faire, c'est de manière récursive COPIER un répertoire que les fichiers et sous-répertoires. Je n'ai pas encore trouvé des exemples de comment copier un fichier unique (seulement la façon d'écrire de nouveaux).
OriginalL'auteur btelles
Zippy va travailler pour cela. Il peut y avoir une façon plus cool à faire, mais depuis il n'y a essentiellement pas de docs, voici ce que j'ai trouvé pour la copie des répertoires de manière récursive avec Zippy dans un Rakefile. Cette Rakefile est utilisé dans un environnement Rails alors j'ai mis gem exigences dans mon Gemfile:
Et c'est le Rakefile
Maintenant je peux l'utiliser comme ceci:
et il va produire
my.zip
qui contient intérieure d'un répertoire appelé 'mon' avec des copies de certaines des fichiers et des répertoires.OriginalL'auteur jwfearn
J'ai été en mesure d'obtenir les répertoires de travail avec le même
ZipOutputStream
utilisé dans le article original.Tout ce que j'avais à faire était d'ajouter le répertoire lors de l'appel de
zos.put_next_entry
.Par exemple:
Je viens de changer
zos.put_next_entry('some-funny-name.jpg')
àzos.put_next_entry('myfolder/some-funny-name.jpg')
, et la zipfile avait un sous-dossier appelémyfolder
qui contenait les fichiers.zipruby
, mais il ne semble plus être maintenu.OriginalL'auteur Ryan Endacott