Verwenden von rubyzip zum Hinzufügen von Dateien und verschachtelten Verzeichnissen zu einem zipoutputstream

7

Ich habe Probleme mit rubyzip, um Verzeichnisse an einen zipoutputstream anzuhängen. (Ich möchte den Ausgabestrom, damit ich es von einem Schienen-Controller senden kann). Mein Code folgt diesem Beispiel:

Ссылка

Wenn geändert, um Verzeichnisse in die Liste der hinzuzufügenden Dateien aufzunehmen, erhalte ich den folgenden Fehler:

Jede Hilfe würde sehr geschätzt werden.

AKTUALISIEREN

Nachdem ich eine Reihe von Lösungen ausprobiert hatte, hatte ich den besten Erfolg mit Zipruby, der eine saubere API und gute Beispiele hat: Ссылка .

>     
fturtle 24.02.2010, 00:48
quelle

4 Antworten

9
%Vor%     
Macario 11.11.2010 09:18
quelle
5

OOOOOuuuhh ... du willst definitiv ZIPPY. Es ist ein Rails-Plugin, das einen Großteil der Komplexität in Rubyzip abstrahiert und Ihnen ermöglicht, das zu erstellen, worüber Sie sprechen, einschließlich der Verzeichnisse (soweit ich mich erinnere).

Hier geht's:

Ссылка

Und direkt von der Zippy-Seite:

%Vor%

Bearbeiten : Änderung pro Nutzerkommentar:

Hmm ... das ganze Ziel von Zippy ist es, Ruby Zip viel einfacher zu machen. Vielleicht möchtest du einen zweiten (oder ersten) Blick werfen ...

So erstellen Sie ein Verzeichnis mit Verzeichnissen:

%Vor%     
btelles 24.02.2010 01:50
quelle
3

Zippy wird dafür arbeiten. Es mag einen cooleren Weg geben, dies zu tun, aber da es im Grunde keine Docs gibt, habe ich mir das zum rekursiven Kopieren von Verzeichnissen mit Zippy in einem Rakefile ausgedacht. Diese Rake-Datei wird in einer Rails-Umgebung verwendet, so dass ich Edelstein-Anforderungen in meine Gem-Datei einfüge:

%Vor%

Und das ist die Rakefile

%Vor%

Jetzt kann ich es so benutzen:

%Vor%

und es erzeugt my.zip , das ein inneres Verzeichnis namens 'my' mit Kopien ausgewählter Dateien und Verzeichnisse enthält.

    
jwfearn 18.05.2011 20:56
quelle
2

Ich konnte Verzeichnisse mit demselben ZipOutputStream aufrufen, das in Originalartikel .

Ich musste nur das Verzeichnis hinzufügen, wenn ich zos.put_next_entry aufruft.

Zum Beispiel:

%Vor%

Ich habe gerade zos.put_next_entry('some-funny-name.jpg') auf zos.put_next_entry('myfolder/some-funny-name.jpg') geändert, und die resultierende ZIP-Datei hatte einen verschachtelten Ordner namens myfolder , der die Dateien enthielt.

    
Ryan Endacott 23.04.2014 19:24
quelle

Tags und Links