| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- class zipChajian extends Chajian{
- /**
- * 解压zip文件
- */
- public function unzip($filename, $path){
- if(!function_exists('zip_open'))return 'php未开启zip模块';
- if(!file_exists($filename))return '文件不存在';
- @$resource = zip_open($filename);
- if(!$resource)return '无法打开文件';
- while ($dir_resource = zip_read($resource)){
- if(zip_entry_open($resource,$dir_resource)){
- $file_name = $path.zip_entry_name($dir_resource);
- $file_path = substr($file_name,0,strrpos($file_name, "/"));
- if(!is_dir($file_path))mkdir($file_path,0777,true);
- if(!is_dir($file_name)){
- $file_size = zip_entry_filesize($dir_resource);
- $file_content = zip_entry_read($dir_resource, $file_size);
- $bos = $this->writefile($file_name, $file_content);
- if(!$bos)return '无权限写入文件:'.$file_name.'';
- }
- zip_entry_close($dir_resource);
- }
- }
- zip_close($resource);
- return 'ok';
- }
-
- private function writefile($file_name, $file_content)
- {
- $oldcont = '';
- if(file_exists($file_name)){
- $oldcont = file_get_contents($file_name);
- if($oldcont != $file_content){
- $barfile = ''.UPDIR.'/upage/'.$file_name.'';
- $this->rock->createdir($barfile);
- copy($file_name, $barfile);
- }
- }
- @$bos = file_put_contents($file_name,$file_content);
- return $bos;
- }
-
- /**
- * 获取zip上文件
- */
- public function zipget($filename){
- if(!function_exists('zip_open'))return 'php未开启zip模块';
- if(!file_exists($filename))return '文件不存在';
- @$resource = zip_open($filename);
- if(!$resource)return '无法打开文件';
- $farr = array();
- while ($dir_resource = zip_read($resource)){
- if(zip_entry_open($resource,$dir_resource)){
- $file_name = zip_entry_name($dir_resource);
- $file_path = substr($file_name,0,strrpos($file_name, "/"));
- if(!is_dir($file_name) && substr($file_name,-1)!='/'){
- $file_size = zip_entry_filesize($dir_resource);
- $file_content = zip_entry_read($dir_resource, $file_size);
- if(substr($file_name,0,1)=='/')$file_name = substr($file_name,1);
- $farr[] = array(
- 'filepath' => $file_name,
- 'filesize' => $file_size,
- 'filecontent' => base64_encode($file_content),
- );
- }
- zip_entry_close($dir_resource);
- }
- }
- zip_close($resource);
- return $farr;
- }
-
-
- private function addFileToZip($path, $zip, $wz){
- $handler = opendir($path);
- while(($filename=readdir($handler))!==false){
- if($filename != '.' && $filename != '..'){
- $addfile = $path.'/'.$filename;
- if(is_dir($addfile)){
- $this->addFileToZip($addfile, $zip, $wz);
- }else{
- $localwz = substr($addfile, $wz);
- $zip->addFile($addfile, $localwz);
- }
- }
- }
- @closedir($path);
- }
-
- /**
- * zip打包
- */
- public function packzip($path, $topath)
- {
- $zip = new ZipArchive();
- if($zip->open($topath, ZipArchive::OVERWRITE)=== TRUE){
- $this->addFileToZip($path, $zip, strlen($path));
- $zip->close();
- }
- if(!file_exists($topath))$topath='';
- return $topath;
- }
- }
|