• 技术文章 >后端开发 >php教程

    PHP如何实现解压压缩包文件到指定目录?(纯代码)

    不言不言2018-08-04 11:16:37原创1613
    本篇文章给大家带来的内容是关于PHP如何实现解压压缩包文件到指定目录?(纯代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    //$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);
                    }
                }
            }
        }

    相关文章推荐:

    php如何创建文件目录?(纯代码)

    php如何来实现返回json数据(代码)

    以上就是PHP如何实现解压压缩包文件到指定目录?(纯代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php如何创建文件目录?(纯代码) 下一篇:PHP如何获取IP所属地区的代码实例(纯代码)

    相关文章推荐

    • PHP 文件操作函数(专题)• PHP控制网页过期时间的代码_PHP教程• [PHP]经常用到的实用函数集合第1/2页_PHP教程• php自定义大小验证码的实例代码 • php通用防注入程序 推荐_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网