在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 文件压缩、解压相关推荐

  1. linux jar和zip,Linux命令———zip和jar文件压缩解压

    Linux命令---zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件 1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [ ...

  2. Java实现Zip文件的解压和压缩_ZipUtil

    这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...

  3. android下zip压缩文件加密解密的完美解决方案,Android之zip文件加密解压及进度条的实现...

    zip文件的解压可以使用java的zip库,但是没有实现对加密文件的解压功能,这里可以使用zip4j来实现.具体可以参看该文<Android下zip压缩文件加密解密的完美解决方案 http:// ...

  4. 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 ...

  5. ZIP文件夹解压小程序

    第1关:ZIP文件夹解压小程序之文件压缩 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:实现压缩文件或文件夹的功能. 相关知识 ZIP 是一种较为常见的压缩形式,在 Java 中要想实现 ...

  6. python压缩文件tar_python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...

  7. Qt基于QuaZIP实现文件压缩/解压(Linux下)

    Qt基于QuaZIP实现文件压缩/解压(Linux下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.配置 3.编译与安装 三.编译QuaZIP 1.下载QuaZIP源码 2.将zlib库 ...

  8. Qt基于QuaZIP实现文件压缩/解压(Win下)

    Qt基于QuaZIP实现文件压缩/解压(Win下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.生成VS工程文件 3.使用VS进行编译 三.编译QuaZIP 1.下载QuaZIP源码 2 ...

  9. 压缩包下载后php文件怎么打开,用户下载的压缩包rar格式或zip文件如何解压 解压后就可以安装或运行里面的文件了...

    狸窝网盘中分享有很多解决方案中使用到的软件资源,下载到电脑后是一个软件的文件压缩包,有的用户下载后不知道如何解压或说解压不了,怎么办?由于狸窝所面向用户比较大众化,为方便不同年龄层次和新手的使用,这里 ...

  10. 【文件压缩解压工具类-含密码】

    文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...

最新文章

  1. 机器学习样本标记 示意代码
  2. Linux下Apache虚拟主机配置
  3. 浙江理工大学2019年1月赛
  4. C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
  5. undefined reference to `__errno‘ 解决办法
  6. mysql 数组判断_mysql 判断两个数组是否有交集
  7. [渝粤教育] 西南科技大学 机械控制工程基础在线考试复习资料
  8. ios手机 php无法上传文件,【已解决】uni.uploadFile 苹果ios图片上传不成功
  9. 【原】Redis事务管理
  10. JavaEE基础(06):Servlet整合C3P0数据库连接池
  11. db2 控制台执行创建函数语句_Python函数定义及调用
  12. 浅谈Ajax的blockUI
  13. 为什么阿里巴巴的企业Logo是它?
  14. 【JavaScript 教程】第六章 数组11— filter() :过滤数组中的元素
  15. win10远程桌面_怎么选择Win10系统版本?家庭版与专业版的对比介绍
  16. Aryaka荣获2016年度全球最具影响力SD-WAN解决方案奖
  17. 大数据第一季--Hadoop(day5)-徐培成-专题视频课程
  18. 为什么双绞线可以屏蔽外部磁场干扰?
  19. 【React】485- React 大佬都在用的 22 种神奇工具
  20. use tools:overrideLibrary=xxx.xxx.xxxr to force usage 问题分析。

热门文章

  1. LPC1788 Fatfs读写U盘操作
  2. matlab中带脚咪头怎么找,咪头用万能表怎么测_咪头怎么辨认正负极
  3. 典型相关分析(cca)原理_全网最细的图文详解——手把手教你不会代码一样做RDA/CCA分析!...
  4. 差分相干解调 matlab,差分码PSK信号的相干解调系统仿真
  5. 多变量微积分笔记22——空间曲面的通量
  6. 基于fpga的256M SDRAM控制器 【内含256m sdram仿真模型】
  7. 视频教程-【深入理解计算机网络】讲师解读计算机网络原理视频课程(中)-计算机网络
  8. matlab程序代码 伪码捕获_GNSS_SDR_a 实现北斗卫星的伪随机码产生和捕获跟踪,其中主函数为initial 。 matlab 262万源代码下载- www.pudn.com...
  9. Web 3D 的初临
  10. 北斗卫星导航系统介绍