Zip Dateien erstellen/entpacken mit PHP

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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:

    Source Code

    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:

    Source Code

    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();
    Display All



    Der Vorgang zum entpacken sieht dann so aus:

    Source Code

    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. ?>

    5,529 times viewed