<?php>
namespace app\admin\controller;

class Uzip
{
 /**
 *header('Content-type:text/html;charset=utf-8');
 *@param $filename 解压文件
 *@param $dir 解压到路径
 *@param $overwrite 是否覆盖文件 true false
 */	
	public function uzip($filename, $dir ,$overwrite=true)
	{
		if(!is_dir($dir)) {
			//mkdir($dir, 0777, true);//创建目录保存解压内容
			$this--->create_dirs($dir); 
		 } if(file_exists($filename)) { 
				$resource = zip_open($filename);
				 while($zip = zip_read($resource)) {
					 if(zip_entry_open($resource, $zip)) {
						 //获得文件名,mac压缩成zip,解压需要过滤资源库隐藏文件
						 $file_content = zip_entry_name($zip); 
						// 如果文件不在根目录中 
						$pos_last_slash = strrpos($file_content, "/"); 
						$file_name = substr($file_content, $pos_last_slash+1);
						 if(empty($file_name)){ 
								$pt = $this-&gt;create_dirs($dir.$file_content); } 
								if($file_name) { 
								$save_path = $dir.$file_content; 
								if(file_exists($save_path)) { 
								if($overwrite === true){ 
								//echo $file_name ;	
								$file_size = zip_entry_filesize($zip);
								$file = zip_entry_read($zip, $file_size);
								$fpc = file_put_contents($save_path, $file);
								//zip_entry_close($zip);	
							}else{
								//echo '文件夹内已存在文件 "' . $file_name . '" ;
								return json(['code'=&gt;0,'msg'=&gt;'文件夹内已存在文件']);
							}
							
						}else {
							//echo $file_name . '</pre>;	
							$file_size = zip_entry_filesize($zip);
							$file = zip_entry_read($zip, $file_size);
							$fpc = file_put_contents($save_path, $file);
							//zip_entry_close($zip);
						}
					
					}
				zip_entry_close($zip);	
				}
			}
			zip_close($resource);
			
		}else{
			return false;
		}
		return true;
	}
	
	
	public function create_dirs($path)
	{
	  if (!is_dir($path))
	  {
		$directory_path = "";
		$directories = explode("/",$path);
		array_pop($directories);
	   
		foreach($directories as $directory)
		{
		  $directory_path .= $directory."/";
		  if (!is_dir($directory_path))
		  {
			mkdir($directory_path);
			chmod($directory_path, 0777);
		  }
		}
	  }
	}
}