php压缩文件夹并下载

public function zipDown()
{
    $path="./upload/img";//要压缩的文件的绝对路径
    $filename='ceshi';   //生成压缩文件名
    $this->create_zip($path,$filename);
    if(!file_exists('./' . $filename . '.zip')){
    echo 1;die;
    }
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; filename=' . basename($filename . '.zip')); //文件名
    header("Content-Type: application/zip"); //zip格式的
    header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
    header('Content-Length: ' . filesize('./' . $filename. '.zip')); //告诉浏览器,文件大小
    @readfile('./' . $filename . '.zip');//下载到本地
    @unlink('./' . $filename . '.zip');//删除服务器上生成的这个压缩文件
}


function create_zip($path,$filename){
    $zip = new \ZipArchive();
    if($zip->open($filename.'.zip', \ZipArchive::CREATE |\ZipArchive::OVERWRITE))       {
        $this->addFileToZip($path, $zip);//调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
        $zip->close();//关闭处理的zip文件
    }
}

function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){
            //文件夹文件名字为'.'和‘..’,不要对他们进行操作
            if(is_dir($path."/".$filename)){
                $this->addFileToZip($path."/".$filename, $zip);
            }else{
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 6
自由与温暖是遥不可及的梦想

PHP处理压缩 最好别这样

容易让服务器 空间没有了

1年前 评论
乘风破浪__ (楼主) 1年前
自由与温暖是遥不可及的梦想 (作者) 1年前
乘风破浪__ (楼主) 1年前
自由与温暖是遥不可及的梦想 (作者) 1年前

有个在内存中压缩的库可以考虑一下

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!