function addFileToZip($path, $zip) {
$handler = opendir($path);
while (($filename = readdir($handler)) !== false) {
if ($filename != "." && $filename != "..") {
if (is_dir($path . "/" . $filename)) {
$this->addFileToZip($path . "/" . $filename, $zip);
} else { //将文件加入zip对象
$zip->addFile($path . "/" . $filename);
}
}
}
@closedir($path);
}
$zip = new ZipArchive();
if ($zip->open("test.zip", ZipArchive::OVERWRITE) === TRUE) {
addFileToZip("1735", $zip);
$zip->close();
}
1、上面这段代码是吧当前目录下的名为1735的文件夹中的内容压缩到test.php,这时候压缩出来的zip文件的目录
结构没有问题
2、但当目标文件夹的位置不是在同级目录时,比如addFileToZip("tt/1735", $zip);
这时候压缩出来的zip文件的目录结构就多了一层tt文件夹
3、Q:有没有办法当目标文件不在同级文件夹时,压缩出来的zip包目录结构也只有一层?
兄弟,不知道你解决了没有,,我也和你一样的问题 ,,我也不知道怎么解决?
我最后解决了
使用zip下的renameName,在$zip->addFile($path.$filename);后面再加入一个函数就行了$zip->renameName($path.$filename,$filename);就不会出现多级目录了.