PHP 实现文件压缩解压操作的方法

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • php 解压zip压缩包内容到指定目录的实例

    目录结构: test test/index.php test/test_zip.zip test/test_zip <span style="font-size:14px;"><?php header('Content-type:text/html;charset=utf-8'); $filename = 'test_zip.zip'; $path = './test_zip.zip'; $dir = 'test_zip'; if(!is_dir($dir)) { m

  • PHP自带ZIP压缩、解压缩类ZipArchiv使用指南

    要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip 对于win系统,直接去掉php_zip.dll 扩展的注释,然后重启http服务(IIS或Apache)即可 Linux还没有试验,理论上差别不会很大 功能: 1.解压缩zip文件 2.将文件压缩成zip文件 3.追加文件到zip文件 4.将文件夹打包成zip文件(需要循环添加文件与创建空文件夹) 5.删除压缩文件中的条目 ----

  • php处理文件的小例子(解压缩,删除目录)

    复制代码 代码如下: <?php  $dir =   './temp';$desc   =   'tar_test.tar.gz';system("tar   czvf   $desc   $dir");   //压缩//system("tar   zxvf   $desc"); //解压 function d_rmdir($dirname) {   //删除非空目录  if(!is_dir($dirname)) {      return false;  }

  • PHP Zip解压 文件在线解压缩的函数代码

    复制代码 代码如下: /********************** *@file - path to zip file *@destination - destination directory for unzipped files */ function unzip_file($file, $destination){ // create object $zip = new ZipArchive() ; // open archive if ($zip->open($file) !== TR

  • PHP执行zip与rar解压缩方法实现代码

    Zip:PclZip http://www.phpconcept.net/pclzip/index.en.php Rar:PECL rar http://pecl.php.net/package/rar 以往过去要在php下执行解压缩程序,无非最常见的方法是写command 然后用exec()等执行函式去跑 这在Windows下或许可以,但换成Unix话会碍于帐号权限问题而无法顺利执行 那有没有那种本身就有提供函式可以直接使用而不需要去下command去跑的方法呢 答桉有(话说找了好几天才找到可

  • php的zip解压缩类pclzip使用示例

    PclZip简介PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产生压缩档.列出压缩档的内容以及解压缩档案等等. 简单.易用.强大是我对它的评价. 最近在开发我的Wordpress插件ShareLink,在这过程中,发现了PclZip这个操作zip文件的PHP类,不得不推荐下. 还有另外一个推荐的原因就是在它的源码里面让我发现了一个PHP函数参数的淫荡用法.下面将

  • php压缩和解压缩字符串的方法

    本文实例讲述了php压缩和解压缩字符串的方法.分享给大家供大家参考.具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 $str = 'Hello I am a very very very very long string'; $compressed = gzcompress($str, 9);//压缩级别为9 $uncompressed = gzuncompress($compressed); echo $str, "\n&quo

  • php使用ZipArchive函数实现文件的压缩与解压缩

    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考. 一.解压缩zip文件 $zip=new ZipArchive;//新建一个ZipArchive的对象 if($zip->open('test.zip')===TRUE){ $zip->extr

  • php zlib压缩和解压缩swf文件的代码

    使用php就不一样了,php包含了zlib的链接库,可以直接使用其相关功能,下面是我写的压缩和结压缩swf文件的例子: //没有加入判断swf文件是否已经压缩,入需要可以根据文件的第一个字节是'F'或者'C'来判断 压缩swf文件: //-------------------------------------------------------------------------------------------------- //文件名 $filename = "test.swf"

  • php实现zip压缩文件解压缩代码分享(简单易懂)

    仔细的研究了一下,原来用php写的解压程序效率比想象的还是高很多的,既然这么好,干脆再优化一下后用到自己后台中,虽然现在大部分空间的控制面板中有压缩和解压这个功能,但是毕竟有时候有些麻烦. 做这个之前,没有接触过php压缩这一块,网上搜了一些,大多数都是php压缩类.压缩函数,少则几百行,多的就几千行代码.这对于我这种新手来说很摸不到头脑,再说我也不用这么复杂的功能.最后参考函数手册,理清楚了几个相关的函数后,就明白了怎么去整了. 记得要开启 zip ,把 php.ini 中的 extensio

随机推荐