function zip_file($chdir,$path,$zip_file){
//using system path
//$chdir 所压缩文件所在路径(绝对或相对路径),$path 需要压缩的文件数组或名称(相对路径),$zip_file压缩包所在路径
if(!chdir($chdir)){
return array();
}
$zip = new ZipArchive;
if($zip->open($zip_file, ZipArchive::OVERWRITE) === TRUE){
$rt = array();
$arr = array();
if(!is_array($path)){
$arr[] = $path;
}else{
$arr = $path;
}
foreach($arr as $v){
if (is_dir($v)){
array_push($rt,array('path'=>"dir:".porgram_path($v)));
zip_file_dir($v,$zip,$rt);
}else{
$zip->addFile($v);
array_push($rt,array('path'=>"file:".porgram_path($v)));
}
}
$zip->close();
return $rt;//返回压缩数据数组
}else{
return array();
}
}
function zip_file_dir($path,&$zip,&$list){
$handle = opendir($path);
if(!$handle){
return false;
}
while ($file = readdir($handle)) {
if(($file == ".") || ($file == ".."))
continue;
if(is_file($path."/".$file)){
$zip->addFile($path."/".$file);
array_push($list,array('path'=>"file:".porgram_path($path."/".$file)));
}elseif(is_dir($path."/".$file)){
array_push($list,array('path'=>"dir:".porgram_path($path."/".$file)));
$this->zip_file_dir($path."/".$file,$zip,$list);
}
}
closedir($handle);
}
//using system path
//$chdir 所压缩文件所在路径(绝对或相对路径),$path 需要压缩的文件数组或名称(相对路径),$zip_file压缩包所在路径
if(!chdir($chdir)){
return array();
}
$zip = new ZipArchive;
if($zip->open($zip_file, ZipArchive::OVERWRITE) === TRUE){
$rt = array();
$arr = array();
if(!is_array($path)){
$arr[] = $path;
}else{
$arr = $path;
}
foreach($arr as $v){
if (is_dir($v)){
array_push($rt,array('path'=>"dir:".porgram_path($v)));
zip_file_dir($v,$zip,$rt);
}else{
$zip->addFile($v);
array_push($rt,array('path'=>"file:".porgram_path($v)));
}
}
$zip->close();
return $rt;//返回压缩数据数组
}else{
return array();
}
}
function zip_file_dir($path,&$zip,&$list){
$handle = opendir($path);
if(!$handle){
return false;
}
while ($file = readdir($handle)) {
if(($file == ".") || ($file == ".."))
continue;
if(is_file($path."/".$file)){
$zip->addFile($path."/".$file);
array_push($list,array('path'=>"file:".porgram_path($path."/".$file)));
}elseif(is_dir($path."/".$file)){
array_push($list,array('path'=>"dir:".porgram_path($path."/".$file)));
$this->zip_file_dir($path."/".$file,$zip,$list);
}
}
closedir($handle);
}
当前还没有任何评论