/**
* zip文件解压
*
* @param $zipFilePath zip文件的路径,可以不加zip文件后缀.如果其他类型的文件伪装成zip解压也会失败
* @param $directoryPath 解压到的文件夹路径
* @param null $fileExtensionArray 允许解压的文件后缀名数组,默认为null,解压任何类型的文件
*
* @return bool 解压失败返回false,成功返回true
*/
function unZipFile($zipFilePath, $directoryPath, $fileExtensionArray = null) { if (!file_exists($zipFilePath)) {
return false;
} if (!is_dir($directoryPath)) { // 解压后是不允许执行的,但是任何人可以读写,方便处理
if (!mkdir($directoryPath, 0666, true)) {
return false;
}
} $resource = zip_open($zipFilePath); // 其他类型的文件伪装成zip文件时出现此种情况
if (is_numeric($resource)) {
return false;
} while ($dir_resource = zip_read($resource)) {
if (!zip_entry_open($resource, $dir_resource)) {
continue;
} $file_name = $directoryPath . zip_entry_name($dir_resource);
$file_path = substr($file_name, 0, strrpos($file_name, '/')); if (!is_dir($file_path)) {
if (!mkdir($file_path, 0666, true)) {
return false;
}
} if (is_dir($file_name)) {
zip_entry_close($dir_resource);
continue;
} if (isset($fileExtensionArray) && count($fileExtensionArray) > 0) {
if (!in_array(pathinfo($file_name, PATHINFO_EXTENSION), $fileExtensionArray)) {
continue;
}
} $file_size = zip_entry_filesize($dir_resource);
$file_content = zip_entry_read($dir_resource, $file_size);
file_put_contents($file_name, $file_content); zip_entry_close($dir_resource);
}
zip_close($resource);
return true;
}

5.4 下测试通过,其他的情况可以扩展此函数即可,如限制zip文件的大小

PHP 解压zip文件的函数封装的更多相关文章

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

    WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代 ...

  2. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  3. Android 解压zip文件(支持中文)

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  4. Android 解压zip文件你知道多少?

    对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...

  5. java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  6. Android 解压zip文件

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  7. python用zipfile模块打包文件或是目录、解压zip文件实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...

  8. AIX解压ZIP文件

    AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本   之前的版本 ...

  9. linux 解压zip文件

    linux 解压zip文件 学习了:https://blog.csdn.net/hbcui1984/article/details/1583796 unzip xx.zip

随机推荐

  1. 解决:Eclipse调试的时候报错'Launching XXX' has encountered a problem. Cannot connect to VM.

    问题如下图: 原因:开了代理(我使用的是Proxifier)如图 解决方案:关闭Proxifier即可

  2. javascript 网络是否连接的几种方案

    js   网络是否连接的几种方案 1.通过html5的新属性: window.onload = function () {            var isOnLine = navigator.on ...

  3. js dom

    JavaScript的DOM操作 1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方 ...

  4. ccnu-线段树-单点更新3-C

    C - 单点更新3 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Des ...

  5. 域用户直接登陆(C#,MVC)

    域用户直接登陆MVC网页,未做测试,待测试后进行细化和补充 1. 服务器与客户端必须在同一个域名下. 2. WEB.CONFIG文件中的身份验证方式,使用Windows身份验证: 3. IIS的网站属 ...

  6. JS生成指定长度的随机数

    /** * 生成指定长度的UUID * @param len * @param radix * @returns uuid * eg: createUUID(8, 2) "01001010& ...

  7. Java深入学习之--初始化

    目录 1.方法重载 2.默认构造器 3.this关键字 4.static关键字 5.初始化 1.方法重载 java中方法重载的意思是在同一个类中可以存在方法名相同的方法,而方法的参数类型不同,即使两个 ...

  8. JAVA设计模式之【简单工厂模式】

    1.创建抽象类User public abstract class User // 抽象类 { public void sameOperation() { System.out.println(&qu ...

  9. CodeSmith listview属性

    private void button1_Click(object sender, EventArgs e)//将数据库中读出来的信息直接显示在listview里 { //连接数据库 SqlConne ...

  10. Qt之QHeaderView自定义排序(获取正确的QModelIndex)

    简述 前几节中分享过关于自定义排序的功能,貌似我们之前的内容已经可以很好地解决排序问题了,但是,会由此引发一些很难发现的问题...比如:获取QModelIndex索引错误. 下面,我们先来实现一个整行 ...