Diese Funktion fügt ein Verzeichnis (einschließlich Dateien und Unterverzeichnissen) zu einem Zip-Archiv hinzu.Hinzufügen von Dateien zu einem bestimmten Unterverzeichnis eines Zip-Archivs
private function zip($source, $destination) {
if (!extension_loaded('zip') || !file_exists($source)) {
return false;
}
$zip = new ZipArchive();
if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
return false;
}
$source = str_replace('\\', '/', realpath($source));
if (is_dir($source) === true) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file) {
$file = str_replace('\\', '/', $file);
// Ignore "." and ".." folders
if(in_array(substr($file, strrpos($file, '/')+1), array('.', '..')))
continue;
$file = realpath($file);
if (is_dir($file) === true) {
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
}
else if (is_file($file) === true) {
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
}
}
}
}
Mein Problem ist, dass das Verzeichnis zum Stamm des Zip-Archivs hinzugefügt wird. Aber ich möchte, dass es zu einem bestimmten Unterverzeichnis hinzugefügt wird. Wie kann ich das machen?
Sie erstellen zuerst das leere Verzeichnis und dann fügen Sie es dem Pfad voran, den Sie verwenden, um weitere Dateien oder Verzeichnisse hinzuzufügen ...? – CBroe