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.