http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E
PHP创建ZIP压缩文件,php解压ZIP,php操作ZIP类,php操作zip类,通过不同的方法来实现,压缩(文件和文件夹),解压,删除以及重命名压缩文件内容本站原创,转载请注明<?php
class zip_forasp{
public $zipobj;#zip对象
public $err;#设置错误信息
public $temp_array;#假如有文件夹添加,则进行临时数组放置
function __construct(){
if(class_exists(ZipArchive)){
$this->zipobj = new ZipArchive();
}else{
$this->err_message("不能创建zip对象,请确定php.ini配置是否正确:将;extension=php_zip.dll(最后一个)前面的;去掉,类".__CLASS__.__LINE__."行");
}
}
public function create_zip($file){#创建压缩文件,file是生成的zip文件名
if(!$this->zipobj->open($file.".zip",ZipArchive::CREATE))$this->err_message("未知错误,类".__CLASS__.__LINE__."行");
}
public function add_file($filepath){#向压缩文件添加内容,可以是文件,也可以是文件夹
if(is_dir($filepath)){#如果是文件夹则去获取里面的便利内容
$this->get_dir_file($filepath);//FORASP.CN
$file = $this->temp_array;//将遍历回来的文件路径数组给filepath
}else{
if($this->check_file($filepath))return false;
$file[] = $filepath;
}
for($i=0;$i
if(!$this->zipobj->addFile($file[$i])){
$this->err_message("未知错误,类".__CLASS__.__LINE__."行");
break;
}
}
return true;
}
public function change_name($zipname,$oldname,$newname){
$this->open_zip($zipname);
if($this->zipobj->renameName($oldname,$newname))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");
}
public function del_file($zipname,$filename){#删除压缩文件内容,可以是文件,也可以是文件夹,zip是要删除的压缩文件的名称,后面的是要删除的压缩内容名称
$this->open_zip($zipname);
if($this->zipobj->deleteName($filename))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");
}
public function un_zip($file,$path="./"){#file要解压文件,$path要解压到的路径,默认为当前路径
$temp = $this->open_zip($file);
$this->zipobj->extractTo($path);
return $temp;
}
private function open_zip($zipname){//
if($this->check_file($zipname))return false;
if(!$this->zipobj->open($zipname))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");#
}
private function get_dir_file($temppath){
$dir = dir($temppath);
while($tempfile = $dir->read()){
if($tempfile!="."&&$tempfile!=".."){
if(is_file($temppath."/".$tempfile))$this->temp_array[]=$temppath.$tempfile;
if(is_dir($temppath."/".$tempfile))$this->get_dir_file($temppath."/".$tempfile);
}
}
return;
}
private function check_file($file){
if(!file_exists($file))$this->err_message("文件".$file."不存在");//
}
public function zip_close(){
$this->zipobj->close();
}
private function err_message($str){
echo $str;
die();
}
}#类结束
/*
本站原创:http://www.forasp.cn/
QQ419018470
需要说明一点的是:需要配置php.ini文件,将最后的;extension=php_zip.dll(最后一个)前面的;去掉
请保留此信息,不影响运行
*/
//进行压缩测试
$zip = new zip_forasp();
$zip->create_zip("newzip2");#php创建zip压缩文件名
//$zip->add_file("3/");#php向zip文件中添加文件夹
$zip->add_file("2.txt");#php想zip中添加文件
$zip->zip_close();#关闭zip对象
#进行压缩内容重命名测试
$zip1 = new zip_forasp();
$zip1->change_name("newzip.zip","3/4.bmp","3/5.bmp");#php重命名zip文件里面内容
$zip1->zip_close();
///删除文件测试
$zip2 = new zip_forasp();
$zip2->del_file("newzip.zip","file.txt");
$zip2->zip_close();
//进行解压测试
$zip4 = new zip_forasp();
$zip4->un_zip("newzip.zip");
$zip4->zip_close();
?>
测试一下吧
forasp.cn