PHP的ZipArchive addFile()两次添加文件

时间:2018-06-20 00:07:52

标签: php zip ziparchive

我有以下代码:

    $zip = new ZipArchive();
    $zip->open($nome, ZIPARCHIVE::CREATE);

    foreach($files as $file) {
        $zip->addFile($file,basename($file));
    }

$ files是一个包含实际文件路径的数组,它们非常类似于“ ../folder/anotherFolder/file1.txt”、“../folder/anotherFolder/file2.txt”等上。

已成功创建zip文件,但是,由于$ zip-> addFile()的basename($ file)参数,按预期方式,我同时拥有file1.txt和file2.txt。文件夹/anotherFolder/file1.txt和文件夹/anotherFolder/file2.txt。

如果我删除第二个参数basename($ file),则zip文件中将没有重复的条目,但是文件夹/ anotherFolder /结构将在那里,而我所想要的只是,而且, file1.txt和file2.txt。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我以为我遇到了同样的问题,结果是因为我在同一个输出文件上工作,并且没有设置ZipArchive :: OVERWRITE标志:

在第一次尝试中,我没有为addFile()设置第二个参数。 在第二次尝试中,我确实进行了设置,但是由于第一次尝试中已经存在输出zip文件,因此仅将文件添加到存档中,而原始文件保留在存档中,从而产生了双重添加的幻觉。