Zip Dateien erstellen/entpacken mit PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • seit PHP 5 ist es sehr einfach .zip Dateien zu erstellen und wieder zu entpacken mit der eigenen Klasse ZipArchive
    Damit der Code einfacher zu lesen ist habe ich Ihn nicht zerstückelt sondern einfach Kommentare verwendet


    Hier die wichtigsten Methoden:

    Quellcode

    1. addEmptyDir() // Fügt einen leeren Ordner hinzu
    2. addFile() // Fügt eine Datei hinzu
    3. addFromString() // Fügt einen Datei aus Text hinzu
    4. close() // Schließt eine offene Zip-Datei
    5. extractTo() // Entpackt ein Archiv an eine bestimmte Position
    6. open() // Öffnet eine Zip-Datei, bzw legt eine neue Zip-Datei an



    Vorgang um Datei(en) und oder Ordner zu archivieren währe dann z.B. wie folgt:

    Quellcode

    1. $path = realpath('data/files'); // Pfad+ Order/Datei der/die gepackt werden soll
    2. $archiv_zip = 'datei.zip';// Name des .zip Archiv (erstellen automatisch)
    3. $archiv = new ZipArchive();
    4. $archiv->open($archiv_zip, ZipArchive::CREATE); //Öffnet das Archiv, der Modus CREATE erstellt dabei ein neues Archiv es gibt sonst noch OVERWRITE, EXCL, CHECKCONS
    5. $diriter = new RecursiveDirectoryIterator($path); //RecursiveDirectoryIterator bietet eine Schnittstelle zur Iteration rekursiv über Dateisystem Verzeichnisse.
    6. $Iterator = new RecursiveIteratorIterator($diriter); //rekursive Iteratoren durchlaufen
    7. foreach($Iterator as $element) {
    8. $dir = str_replace($path, '', $element->getPath()) . '/';
    9. if($element->isDir()){// falls ein Ordner archiviert werden soll
    10. $archiv->addEmptyDir($dir);// Ordner erstellen
    11. } elseif ($element->isFile()) {// falls eine Datei archiviert werden soll
    12. $file = $element->getPath().'/'.$element->getFilename();
    13. $fileInArchiv = $dir. element->getFilename();
    14. $archiv->addFile($file, $fileInArchiv);// Datei zum Archiv hinzufügen
    15. }
    16. }
    17. $archiv->setArchiveComment('Backup von ' . $path);// Kommentar für die .zip
    18. $archiv->close();
    Alles anzeigen



    Der Vorgang zum entpacken sieht dann so aus:

    Quellcode

    1. <?php
    2. $destinationPath = realpath('tmp/');// entpacken nach.. Pfad
    3. $zipfile = 'archiv.zip';
    4. $archiv = new ZipArchive();
    5. $archiv->open($zipfile);
    6. $archiv->extractTo($destinationPath);
    7. ?>

    8.947 mal gelesen