PHP将多级目录打包成zip文件

$zip = new ZipArchive();
//参数1:zip保存路径,参数2:ZIPARCHIVE::CREATE没有即是创建
if(!$zip->open("$exportPath.zip",ZIPARCHIVE::CREATE))
{
    echo "创建[$exportPath.zip]失败<br/>";return;
}
//echo "创建[$exportPath.zip]成功<br/>";
$this->createZip(opendir($exportPath),$zip,$exportPath);
$zip->close();

 

/*压缩多级目录
        $openFile:目录句柄
        $zipObj:Zip对象
        $sourceAbso:源文件夹路径
    */
function createZip($openFile,$zipObj,$sourceAbso,$newRelat = '')
{
    while(($file = readdir($openFile)) != false)
    {
        if($file=="." || $file=="..")
            continue;

        /*源目录路径(绝对路径)*/
        $sourceTemp = $sourceAbso.'/'.$file;
        /*目标目录路径(相对路径)*/
        $newTemp = $newRelat==''?$file:$newRelat.'/'.$file;
        if(is_dir($sourceTemp))
        {
            //echo '创建'.$newTemp.'文件夹<br/>';
            $zipObj->addEmptyDir($newTemp);/*这里注意:php只需传递一个文件夹名称路径即可*/
            $this->createZip(opendir($sourceTemp),$zipObj,$sourceTemp,$newTemp);
        }
        if(is_file($sourceTemp))
        {
            //echo '创建'.$newTemp.'文件<br/>';
            $zipObj->addFile($sourceTemp,$newTemp);
        }
    }
}

 

posted @ 2022-06-22 16:38  赵瑛  阅读(340)  评论(0编辑  收藏  举报

版权所有 © 2022 沅来是澧

如果有程序开发、网站建设等需求的请联系我,QQ:47419233