Home >Backend Development >PHP Tutorial >How does PHP decompress the compressed package file to a specified directory? (Pure code)
The content of this article is about how to decompress the compressed package file to the specified directory in PHP? (Pure code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you. .
//$src_file为文件路径,上传文件返回压缩包路径即可 public function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true){ $filePath_arr = []; if ($zip = zip_open($src_file)){ if ($zip){ $splitter = ($create_zip_name_dir === true) ? "." : "/"; if($dest_dir === false){ $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/"; } // 如果不存在 创建目标解压目录 $this->create_dirs($dest_dir); // 对每个文件进行解压 while ($zip_entry = zip_read($zip)){ // 文件不在根目录 $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/"); if ($pos_last_slash !== false){ // 创建目录 在末尾带 / $this->create_dirs($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1)); } // 打开包 if (zip_entry_open($zip,$zip_entry,"r")){ // 文件名保存在磁盘上 $file_name = $dest_dir.zip_entry_name($zip_entry); // 检查文件是否需要重写 if ($overwrite === true || $overwrite === false && !is_file($file_name)){ // 读取压缩文件的内容 $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); @file_put_contents($file_name, $fstream); // 设置权限 chmod($file_name, 0777); echo "save: ".$file_name."<br />"; } // 关闭入口 zip_entry_close($zip_entry); } } // 关闭压缩包 zip_close($zip); } }else{ return false; } return $filePath_arr; //返回压缩后所有文件路径 } /** * 创建目录 */ 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); } } } }
Recommended related articles:
How to create a file directory in php? (Pure code)
How does php return json data (code)
The above is the detailed content of How does PHP decompress the compressed package file to a specified directory? (Pure code). For more information, please follow other related articles on the PHP Chinese website!