$filename = time().".zip";
$zip = new \ZipArchive();
if($zip->open($filename, \ZipArchive::CREATE)=== TRUE){
$this->addFileToZip("E:/project" .__ROOT__.'/ask/',$zip);//加入应用程序
$zip->close(); //关闭处理的zip文件
}
if(!file_exists($filename)){
die("无法找到文件"); //即使创建,仍有可能失败。。。。
}
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename)); //文件名
header("Content-Type: application/zip"); //zip格式的
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小
ob_clean();
flush();
@readfile($filename);
@unlink($filename);
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对象
$zip->addFile($path."/".$filename);
//如果要去掉目录层级则
$file_info_arr= pathinfo($path."/".$filename);
$zip->addFile($path."/".$filename,$file_info_arr['basename']);
}
}
}
@closedir($path);
}