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

原味链接:https://blog.csdn.net/wujiangwei567/article/details/45768467(感谢博主分享)

原文地址:https://www.cnblogs.com/luqiang213917/p/9414471.html

时间: 2024-10-07 17:47:21

PHP解压压缩包文件到指定目录的实现的相关文章

PHP 解压 ZIP 文件到指定文件夹

本类实现参考 php manual 评论 /** * function: 解压zip 格式的文件 * author:friker * date:2015-15-14 * reference:http://php.net/manual/zh/ref.zip.php * all rights reserved:[email protected] */ class Unzip{ public function __construct(){ //init code here... header("con

java解压zip文件至指定文件夹

前面,笔者讲到.如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点.因为存在多级文件的压缩,却不存在多级文件的解压缩.也就是说,压缩时,你要把所有文件都塞到压缩包里.而解压缩只需要解压一级,压缩包里面的压缩文件则不必理会.直接上代码喽: /** * 解压文件 * @param zipPath 要解压的目标文件 * @param descDir 指定解压目录 * @return 解压结果:成功,失败 */ @Suppr

jar 解压war包到指定目录

用 jar -xvf  .jar 命令默认解压到当前目录,想要解压到指定目录 需要使用unzip .jar -d 目录 如: unzip pay.war -d /home/zookeeper1/test/pay 注意-d 是绝对路径

通过javascript在网页端解压zip文件并查看压缩包内容

WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代码很多, 而且包含大副的图片,那么就可以把js和css和jpg和png等各种数据通过服务端打包成zip传送到浏览器, 浏览器负责解压, css实用动态生成插入到dom中,js也用globalEval直接执行, jpg或者png各种图片文件由blob流转化为image, 直接插入到浏览器中: html

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 http://my.oschina.net/junn/blog/104464 PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipAr

linux解压rar文件

借助rarlinux来解压rar格式文件. 下载地址:http://www.rarlab.com/download.htm 打不开或者网速不好的可以到可以我的资源中的下载,免费: http://download.csdn.net/detail/alex_my/6731197 // 1 解压 tar -zxvf rarlinux-3.6.0.tar.gz // 2 解压出一个rar文件夹,进入, 需要root权限 cd rar make make install // 使用方法 =========

python 解压 zip 文件

python 解压压缩包 使用 python 的 zipfile 模块 对同一目录下的所有 zip 文件解压,也可以指定解压文件名 import os import sys import zipfile def unzip(filename: str): try: file = zipfile.ZipFile(filename) dirname = filename.replace('.zip', '') # 如果存在与压缩包同名文件夹 提示信息并跳过 if os.path.exists(dir

[Linux] 解压tar.gz文件,解压部分文件

遇到数据库无法查找问题原因,只能找日志,查找日志的时候发现老的日志都被压缩了,只能尝试解压了   数据量比较大,只能在生产解压了,再进行查找 文件名为*.tar.gz,自己博客以前记录过解压方法: http://www.cnblogs.com/garinzhang/archive/2013/04/23/3037147.html 使用tar –zxvf *.tar.gz无法解压,明明好好的tar.gz文件能这样解压的,为什么不能解压?   后来想了想,是不是先要解压*.gz文件,使用gunzip

saltstack在解压zip文件时保留原始修改时间的方法

saltstack在使用archive.unzip功能时,会将压缩包中文件的"修改时间"替换为当前解压的系统时间,为了能够保留文件原来的"修改时间",需要对salt-manion的源码中archive.py文件的unzip方法进行修改: 文件位置: windows    C:/salt/bin/Lib/site-packages/salt/modules/archive.py linux:  /user/lib/python2.7/site-packages/sal