创建Zip存档时保留文件夹结构

时间:2015-09-12 19:04:02

标签: php

我想创建一个zip文件,并将目录中的所有文件夹和文件复制到该文件中。它已成功创建并包含文件和文件夹,但文件树未保留,所有内容都位于根目录中。

我的目录:

folder/
    test.txt
    test2.txt
test.php

zip档案:

folder/
test.txt
test2.txt
test.php

这是我的代码:

public function createZipFromDir($dir, $zip_file) {
    $zip = new ZipArchive();
    if(true !== $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)) {
        return false;
    }

    $this->zipDir($dir, $zip);
    return $zip;
}

public function zipDir($dir, $zip) {
    $dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
    $files = scandir($dir);
    foreach($files as $file) {
        if(in_array($file, array('.', '..'))) continue;
        if(is_dir($dir . $file)) {
            $zip->addEmptyDir($file);
            $this->zipDir($dir . $file, $zip);
        } else {
            $zip->addFile($dir . $file, $file);
        }
    }
}

$zip = $this->createZipFromDir($rootPath, $archiveName);

0 个答案:

没有答案