Zippen mit PHP
Wichtig: Tutorial vom 6. August 2004 (!). Aufgrund großer Nachfrage, vorallem aus dem JEX-Treme Forum ist er nun nochmals für euch online zu finden.
Inhaltsverzeichnis
Einführung
Wer wollte nicht auch schon einmal mit PHP zippen? Selbst wenn es nur kleine Textdateien sind! In diesem Tutorials wird es erklärt!
Auf geht’s
Als erstes Laden wir uns einmal die Ziplib herunter. Die gibt es direkt hier (bzw. weiter unten im Anhang). Nun entpacken wir die Datei. Aus den entpackten Dateien brauchen wir eigentlich nur die Datei “zip.lib.php”.
Zipdatei erstellen
Wir erstellen als erstes mal eine Datei namens “zippen.php”. In diese Datei schreiben wir dann als erstes:
1 2 3 | <?php ob_start(); ?> |
Die 1. Zeile müsste jedem klar sein: Damit öffnet man den PHP-Code. ob_start() buffert die Ausgabe, sodass keine Fehlermeldung wie “header is already sendet…” entsteht.
1 2 3 | <?php require("./zip.lib.php"); ?> |
Mit require() kann man wie mit include() irgendetwas includen. In diesem Fall includen wir die Zip.lib-Class. Der Pfad zur Datei muss lediglich angepasst werden.
1 2 3 | <?php $zipfile = new zipfile("archive.zip"); ?> |
Nun generieren wir mit hilfe der zip.lib-class eine Zipdatei. “archiv.zip” ist in diesem Fall der Name der Zipdatei.
Den kompletten Inhalt eine Verzeichnisses hinzufügen
Wenn man jetzt den kompletten Inhalt eines Verzeichnisses in die Zipdatei packen möchte, muss man folgenden Befehl anwenden:
1 2 3 | <?php $zipfile->addDirContent("./"); ?> |
Dieser Befehl packt das komplette Verzeichnis “./” in die Zipdatei. Man könnte auch schreiben:
1 2 3 | <?php $zipfile->addDirContent("./test"); ?> |
Dieser Code packt das Verzeichnis “/test” in die Zipdatei.
Einzelne Dateien hinzufügen
Du brauchst nicht immer das komplette Verzeichnis hinzufügen, nein, auch einzelne Dateien funktionieren:
1 2 3 | <?php $zipfile->addFileAndRead("haus.jpg"); ?> |
Dieser Befehl fügt die Datei “haus.jpg” in die Zipdatei ein.
Wenn die Datei allerdings im Verzeichnis “bilder” ist, muss es heißen:
1 2 3 | <?php $zipfile->addFileAndRead("bilder/haus.jpg"); ?> |
Eine neu erstellte Datei hinzufügen
Wenn du einen Text z.B. in der Variable $text hast, kannst du auch diesen Text in eine Datei packen.
Das sieht dann ungefähr so aus:
1 2 3 4 | <?php $text="Dies ist ein Text, der in das Ziparchiv soll."; $zipfile->addFile(, 'Text.txt'); ?> |
Jetzt wird eine neue Datei, mit dem Dateinamen “Text.txt”, und dem Inhalt der Variable “$text” in das Archiv eingefügt.
Datei ausgeben
Zuletzt muss die Datei nur noch ausgegeben werden.
Das erledigt der Befehl $zipfile->file();:
1 2 3 | <?php echo $zipfile->file(); ?> |
Beispiel
Hier noch ein Beispiel, für die, die es noch nicht verstanden haben, wie das jetzt genau geht:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php // Startet den Buffer, sodass keine Header-Fehlermeldungen entstehen. ob_start(); // Läd die Zip-Library require("./zip.lib.php"); // Erstellt eine neue Zipdatei $zipfile = new zipfile("archive.zip"); // Fügt den kompletten Inhalt des Verzeichnisses "/" in die Zipdatei ein. $zipfile->addDirContent("./"); // Fügt die Datei "haus.jpg" des Verzeichnisses "bilder" in die Zipdatei ein. $zipfile->addFileAndRead('bilder/haus.jpg'); // Gibt die Zip-Datei aus. echo $zipfile->file(); ?> |
Achtung
Leider lässt sich das generierte Zipfile nicht mit dem intigrierten Packer von Windows XP öffnen. Benutze stattdessen lieber Winrar.
Schlusswort
Hier endet dann mein erster selbstgeschriebener Tutorial. Ich hoffe ihr konntet mir folgen und habt “hinterher” genausoviel Spass beim Ausprobieren wie ich beim Schreiben. Solltet ihr trotzdem noch Fragen haben, dann meldet euch bei mir schreibt in die Kommentare.






12. August 2008 um 21:43 Uhr
18. Januar 2010 um 08:25 Uhr