<?php
namespace app\admin\controller;

//use app\common\controller\AdminController;

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->create_dirs($dir.$file_content);
					}
					
					if($file_name) {
						
						$save_path = $dir.$file_content;
						
						if(file_exists($save_path)) {
							if($overwrite === true){
								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);	
							}else{
								//echo '文件夹内已存在文件 "' . $file_name . '" <pre />';
								return json(['code'=>0,'msg'=>'文件夹内已存在文件']);
							}
							
						}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);
		  }
		}
	  }
	}
}