PHP zip 文件压缩、解压
在php中,有时我们需要使用到压缩文件操作,压缩文件可以节省磁盘空间;且压缩文件更小,便于网络传输,效率高,下面我们就来了解php的压缩解压相关操作
在PHP中有一个ZipArchive类,专门用于文件的压缩解压相关操作
在ZipArchive类中主要使用到了如下方法:
1:open(打开一个压缩包文件)
$zip = new \ZipArchive;
$zip->open('test_new.zip', \ZipArchive::CREATE)
第一个参数:要打开的压缩包文件
第二个参数:
ZIPARCHIVE::OVERWRITE 总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉
ZIPARCHIVE::CREATE 如果指定的zip文件不存在,则新建一个
ZIPARCHIVE::EXCL 如果指定的zip文件存在,则会报错
ZIPARCHIVE::CHECKCONS 对指定的zip执行其他一致性测试
2:addFile(将指定文件添加到压缩包中)
//将test.txt文件添加到压缩包中
$zip->addFile('test.txt'); //第二个参数可对文件进行重命名
3:addEmptyDir (将指定空目录添加到压缩包中)
//将一个空的目录添加到zip中$zip->addEmptyDir ('newdir');
4:addFromString(将指定内容的文件添加到压缩包)
// 将有指定内容的new.txt文件添加到zip文件中
$zip->addFromString('new.txt', '要添加到new.txt文件中的文本');
5:extractTO(将压缩包解压到指定目录)
$zip->extractTo('test');
6:getNameIndex(根据索引返回文件名称)
$zip->getNameIndex(0);//返回压缩包中索引为0的文件名称
7:getStream(根据压缩内的文件名称,获取该文件的文本流)
$zip->getStream('hello.txt');
8:renameIndex(根据压缩文件内的索引(从0开始)修改压缩文件内的文件名)
//把压缩文件内第一个文件修改成newname.txt
$zip->renameIndex(0,'newname.txt');
9:renameName(根据压缩文件内的文件名,修改压缩文件内的文件名)
//把压缩文件内的word.txt修改成newword.txt
$zip->renameName('word.txt','newword.txt');
10:deleteIndex (根据压缩文件内的索引删除压缩文件内的文件)
//把压缩文件内第一个文件删除
$zip->deleteIndex (0);
11:deleteName(根据压缩文件内的文件名删除文件)
//把压缩文件内的word.txt删除
$zip->deleteName('word.txt');
上面就是ZipArchive的一些常用方法,下面来一些简单示例
一:创建一个压缩包
$zip = new \ZipArchive;
if ($zip->open('test_new.zip', \ZipArchive::CREATE) === true)
{// 将指定文件添加到zip中$zip->addFile('test.txt');// test.txt文件添加到zip并将其重命名为newfile.txt$zip->addFile('test.txt', 'newfile.txt');// 将test.txt文件添加到zip文件中的test文件夹内$zip->addFile('test.txt', 'test/newfile.txt');//将一个空的目录添加到zip中$zip->addEmptyDir ('test');// 将有指定内容的new.txt文件添加到zip文件中$zip->addFromString('new.txt', '要添加到new.txt文件中的文本');// 将有指定内容的new.txt添加到zip文件中的test文件夹$zip->addFromString('test/new.txt', '要添加到new.txt文件中的文本');//将images目录下所有文件添加到zip中if ($handle = opendir('images')){// 添加目录中的所有文件while (false !== ($entry = readdir($handle))){if ($entry != "." && $entry != ".." && !is_dir('images/' . $entry)){$zip->addFile('images/' . $entry);}}closedir($handle);}// 关闭zip文件$zip->close();
}
二:获取压缩包的文件信息并解压指定压缩包
$zip = new \ZipArchive;
if ($zip->open('test_new.zip') === true) {//获取索引为0的文件名称var_dump($zip->getNameIndex(0));//将压缩包文件解压到test目录下$zip->extractTo('test');//获取压缩包指定文件的文本流$stream = $zip->getStream('test.txt');// 关闭zip文件$zip->close();$str = stream_get_contents($stream); //这里注意获取到的文本编码var_dump($str);
}
三:修改压缩包内指定文件的文件名称及删除压缩包内指定文件
$zip = new \ZipArchive;
if ($zip->open('test_new.zip') === true) {//把压缩文件内索引为0的文件修改成newname.txt$zip->renameIndex(0,'newname.txt');//把压缩文件内的new.txt修改成newword.txt$zip->renameName('new.txt','newword.txt');//删除压缩文件内索引为0的文件$zip->deleteIndex(0);//删除压缩文件的test.png$zip->deleteName('test.png');// 关闭zip文件$zip->close();
}
转载:https://www.jianshu.com/p/7007641da922
仅用于学习,如有侵权,请联系删除。
PHP zip 文件压缩、解压相关推荐
- linux jar和zip,Linux命令———zip和jar文件压缩解压
Linux命令---zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件 1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [ ...
- Java实现Zip文件的解压和压缩_ZipUtil
这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...
- android下zip压缩文件加密解密的完美解决方案,Android之zip文件加密解压及进度条的实现...
zip文件的解压可以使用java的zip库,但是没有实现对加密文件的解压功能,这里可以使用zip4j来实现.具体可以参看该文<Android下zip压缩文件加密解密的完美解决方案 http:// ...
- Linux常用文件压缩/解压命令格式大全(tar、gzip、bzip2、zip、compress、cpio、compress、dd)建议收藏
Linux常用文件压缩/解压命令格式大全 1. tar 2. gzip 3. bzip2 4. zip 5. compress 6. cpio 7.dd 1. tar 打包备份后的文件包缀:.tar ...
- ZIP文件夹解压小程序
第1关:ZIP文件夹解压小程序之文件压缩 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:实现压缩文件或文件夹的功能. 相关知识 ZIP 是一种较为常见的压缩形式,在 Java 中要想实现 ...
- python压缩文件tar_python 实现tar文件压缩解压的实例详解
python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...
- Qt基于QuaZIP实现文件压缩/解压(Linux下)
Qt基于QuaZIP实现文件压缩/解压(Linux下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.配置 3.编译与安装 三.编译QuaZIP 1.下载QuaZIP源码 2.将zlib库 ...
- Qt基于QuaZIP实现文件压缩/解压(Win下)
Qt基于QuaZIP实现文件压缩/解压(Win下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.生成VS工程文件 3.使用VS进行编译 三.编译QuaZIP 1.下载QuaZIP源码 2 ...
- 压缩包下载后php文件怎么打开,用户下载的压缩包rar格式或zip文件如何解压 解压后就可以安装或运行里面的文件了...
狸窝网盘中分享有很多解决方案中使用到的软件资源,下载到电脑后是一个软件的文件压缩包,有的用户下载后不知道如何解压或说解压不了,怎么办?由于狸窝所面向用户比较大众化,为方便不同年龄层次和新手的使用,这里 ...
- 【文件压缩解压工具类-含密码】
文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...
最新文章
- 机器学习样本标记 示意代码
- Linux下Apache虚拟主机配置
- 浙江理工大学2019年1月赛
- C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
- undefined reference to `__errno‘ 解决办法
- mysql 数组判断_mysql 判断两个数组是否有交集
- [渝粤教育] 西南科技大学 机械控制工程基础在线考试复习资料
- ios手机 php无法上传文件,【已解决】uni.uploadFile 苹果ios图片上传不成功
- 【原】Redis事务管理
- JavaEE基础(06):Servlet整合C3P0数据库连接池
- db2 控制台执行创建函数语句_Python函数定义及调用
- 浅谈Ajax的blockUI
- 为什么阿里巴巴的企业Logo是它?
- 【JavaScript 教程】第六章 数组11— filter() :过滤数组中的元素
- win10远程桌面_怎么选择Win10系统版本?家庭版与专业版的对比介绍
- Aryaka荣获2016年度全球最具影响力SD-WAN解决方案奖
- 大数据第一季--Hadoop(day5)-徐培成-专题视频课程
- 为什么双绞线可以屏蔽外部磁场干扰?
- 【React】485- React 大佬都在用的 22 种神奇工具
- use tools:overrideLibrary=xxx.xxx.xxxr to force usage 问题分析。
热门文章
- LPC1788 Fatfs读写U盘操作
- matlab中带脚咪头怎么找,咪头用万能表怎么测_咪头怎么辨认正负极
- 典型相关分析(cca)原理_全网最细的图文详解——手把手教你不会代码一样做RDA/CCA分析!...
- 差分相干解调 matlab,差分码PSK信号的相干解调系统仿真
- 多变量微积分笔记22——空间曲面的通量
- 基于fpga的256M SDRAM控制器 【内含256m sdram仿真模型】
- 视频教程-【深入理解计算机网络】讲师解读计算机网络原理视频课程(中)-计算机网络
- matlab程序代码 伪码捕获_GNSS_SDR_a 实现北斗卫星的伪随机码产生和捕获跟踪,其中主函数为initial 。 matlab 262万源代码下载- www.pudn.com...
- Web 3D 的初临
- 北斗卫星导航系统介绍