为了账号安全,请及时绑定邮箱和手机立即绑定

php ziparchive压缩文件夹时,Zip文件目录结构不对

php ziparchive压缩文件夹时,Zip文件目录结构不对

PHP
函数式编程 2019-03-18 18:07:47
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包目录结构也只有一层?
查看完整描述

4 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

兄弟,不知道你解决了没有,,我也和你一样的问题 ,,我也不知道怎么解决?

我最后解决了

使用zip下的renameName,在$zip->addFile($path.$filename);后面再加入一个函数就行了$zip->renameName($path.$filename,$filename);就不会出现多级目录了.

查看完整回答
反对 回复 2019-03-18
?
12345678_0001

TA贡献1802条经验 获得超5个赞

你们怎么解决的啊,按照楼上的办法他把我本来压缩文件夹里面的目录结构也都搞没了,如果想保留本来压缩有的结构,去掉他的那些多出来的父结构应该怎么做哦?

查看完整回答
反对 回复 2019-03-18
?
青春有我

TA贡献1784条经验 获得超8个赞

function addFileToZip($path, ZipArchive $zip, $sub_dir = '')
{

$handler = opendir($path);
while (($filename = readdir($handler)) !== false)
{
    if ($filename != "." && $filename != "..")
    {
        //文件夹文件名字为'.'和‘..’,不要对他们进行操作
        if (is_dir($path . $filename))
        {
            // 如果读取的某个对象是文件夹,则递归
            addFileToZip($path . $filename . '/', $zip, $filename . '/' );
        }
        else
        {
            //将文件加入zip对象
            $zip->addFile($path . $filename, $sub_dir . $filename );
        }
    }
}
@closedir($path);

}

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 562 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信