Um Verzeichnisse rekursiv zu einem Zip Archiv hinzuzufügen kann folgendes Script verwendet werden:
public function zipDir(&$zip, $dir, $base = “) { if (!file_exists($dir)); $arFiles = scandir($dir); foreach ($arFiles as $file) { if (in_array($file, array(‚.‘, ‚..‘))) continue; if (is_file($dir.’/‘.$file)) { $zip->addFile($dir.’/‘.$file, $base.$file); } else if (is_dir($dir.’/‘.$file)) { $zip->addEmptyDir($base.$file); zipDir($zip, $dir.’/‘.$file, $base.$file.’/‘); } } }
Der Aufruf kann dann wie folgt aussehen:
$tmpzip = tempnam("/tmp", "wpShopGermany"); $zip = new ZipArchive; $res = $zip->open($tmpzip, ZipArchive::CREATE); // Verzeichnisse zipDir($zip, ‚/var/home/htdocs/wpShopGermany/wp-content/uploads/wpsg_produktbilder‘, ‚wpsg_produktbilder/‘); $zip->close(); header("Cache-Control: private"); header(‚Content-Type: application/download; charset=utf-8‘); header(‚Content-Disposition: filename=wpsg_upgrade.zip‘); header("Pragma: public"); session_cache_limiter(’nocache‘); die(file_get_contents($tmpzip));
Das Zip Archiv würde dabei direkt als Download an den Browser übergeben werden.