我有以下代码:
$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。
知道为什么会这样吗?
答案 0 :(得分:0)
我以为我遇到了同样的问题,结果是因为我在同一个输出文件上工作,并且没有设置ZipArchive :: OVERWRITE标志:
在第一次尝试中,我没有为addFile()设置第二个参数。 在第二次尝试中,我确实进行了设置,但是由于第一次尝试中已经存在输出zip文件,因此仅将文件添加到存档中,而原始文件保留在存档中,从而产生了双重添加的幻觉。