Packen Sie alle Dateien in das Verzeichnis und laden Sie die generierte .zip-Datei herunter

Hier ist ein Beispiel dafür, wie Sie mit PHP ein ZIP-Archiv aller Dateien in einem Verzeichnis erstellen und den Benutzer anschließend auffordern können, die generierte ZIP-Datei herunterzuladen:

<?php
$dir = 'Pfad/zum/Verzeichnis';

// Initialisiere Archiv-Objekt
$zip = new ZipArchive();
$zip_name = time() . ".zip"; // Zip-Name
$zip->open($zip_name, ZipArchive::CREATE);

// Erstelle rekursive Verzeichnis-Iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY);

foreach ($files as $name => $file) {
  // Überspringe Verzeichnisse (diese werden automatisch hinzugefügt)
  if (!$file->isDir()) {
    // Hole den echten und relativen Pfad für die aktuelle Datei
    $filePath = $file->getRealPath();
    $relativePath = substr($filePath, strlen($dir) + 1);

    // Füge die aktuelle Datei dem Archiv hinzu
    $zip->addFile($filePath, $relativePath);
  }
}

// Zip-Archiv wird erst nach Schließen des Objekts erstellt
$zip->close();

// Aufforderung an den Benutzer die Zip-Datei herunterzuladen
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zip_name);
header('Content-Length: ' . filesize($zip_name));
readfile($zip_name);

// Lösche die Zip-Datei nach dem Download
unlink($zip_name);

?>

Dieses Skript erstellt ein ZIP-Archiv aller Dateien im angegebenen Verzeichnis und fordert den Benutzer anschließend auf, die generierte ZIP-Datei herunterzuladen. Es sorgt auch dafür, dass die Zip-Datei nach dem Download gelöscht wird. Stellen Sie sicher, dass Sie den Pfad zum Verzeichnis aktualisieren, das Sie komprimieren möchten.