PHP 解压zip文件的函数封装
/**
* 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文件的函数封装的更多相关文章
- 通过javascript在网页端解压zip文件并查看压缩包内容
WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说: 如果前端的代 ...
- (转载)C#压缩解压zip 文件
转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...
- Android 解压zip文件(支持中文)
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- Android 解压zip文件你知道多少?
对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...
- java实现解压zip文件,(亲测可用)!!!!!!
项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...
- Android 解压zip文件
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- python用zipfile模块打包文件或是目录、解压zip文件实例
#!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...
- AIX解压ZIP文件
AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本 之前的版本 ...
- linux 解压zip文件
linux 解压zip文件 学习了:https://blog.csdn.net/hbcui1984/article/details/1583796 unzip xx.zip
随机推荐
- [置顶] ArcGIS10.1完美破解步骤详细图文教程
ArcGIS软件安装其实都比较简单的,只要大家清楚每个步骤,顺序安装即可.但是安装过程要注意一些问题,license先安装,安装完成先停止服务,然后再安装desktop.完成后就是破解步骤了,很多同学 ...
- ubuntu安装和配置SVN【转】
ubuntu安装和配置SVN 转自:http://www.jb51.net/os/Ubuntu/56394.html 第一步:安装apache2 libapache2-svn subversion ...
- 使用Gson解析复杂的json数据
Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...
- Spring Injection with @Resource, @Autowired and @Inject
August 1st, 2011 by David Kessler Overview I’ve been asked several times to explain the difference b ...
- H5移动前端完美布局之-margin百分比的使用
一 ,背景 在移动端页面开发我们经常会遇到一件尴尬的事 我们所开发出来的页面跟设计师所给的页面差别很大 再加上移动设备屏幕的大小不一出来的效果更是参差不齐 然后.... 当然 现实情况没有这么糟糕.. ...
- leetcode:Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- java 文件text的写入
日志文件 OutputStream out = new FileOutputStream(f, true); if (list1.size() > 0) { int h1 = 0; for (i ...
- ogre--hlsl--矩阵
重要注释——矩阵的顺序:有一件事需要牢记,HLSL允许你使用2种不同方式处理矩阵和向量相乘——mul(v,m)或者mul(m,v).二者之间唯一的区别就是矩阵被有效地变换.在OGRE中传递矩阵你应该使 ...
- Android微信SDK API 调用教程
最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这 ...
- 【Android】 PopupWindow使用小结
PopupWindow的很多用法网上比较多,我就不做过多解释了,只说下可能会遇到的问题,以及解决办法: 1.PopupWindow中的listview无响应 这个主要是因为show写在了set ...