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);
}
php压缩文件夹并下载
PHP技术
371
0
0
2022-12-10
登录后可点赞和收藏
登录后可点赞和收藏