PclZip介绍
PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压 缩档案等等。由于能够在伺服器端进行压缩与解压缩的动作,所以相当方便使用。
PclZip定义一个PclZip类别,其类别物件可视为一个ZIP档案,亦提供method来进行处理。

如何使用PclZip

1.基础
所有的功能都由pclzip.lib.php这个档案提供,PclZip library可于其首页(www.phpconcept.net/pclzip/index.en.php)下载。所有的PKZIP档案其实就是一个 PclZip的类别物件。当产生一个PclZip档案(ie, PclZip类别物件),就会先产生一个压缩档,且档名已经指定,但此压缩档的内容尚未存在:

<?PHP
require_once('pclzip.lib.php');
$archive = new PclZip("archive.zip");
?>

此物件提供了一些public method可用来处理此档案。

2.参数
每一个method有其各自可使用的参数,包括有必须与非必须的参数:

<?PHP
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->add('dev/file.txt',PCLZIP_OPT_REMOVE_PATH, 'dev');
?>

上例中的’dev/file.txt’就是必须参数;’PCLZIP_OPT_REMOVE_PATH’则为非必须参数。当然有些method也可以只包 含非必须的参数:

<?PHP
$list = $archive->extract(PCLZIP_OPT_PATH, "folder",PCLZIP_OPT_REMOVE_PATH, "data",PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",);
?>

上例中原本压缩档内档案存放的路径为/data,不过你可以指定解压缩至/folder中。此外,在解压缩之前,会呼叫callback function(’callback_pre_extract()’),此function可让使用者在解压缩的过程中变更档案存放路径与档名,或是选 择某些档案不解压缩。
所有可用的非必要参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。

3.回传值
每个method所回传的值可能会不同,将会在每个method中说明。不过大部分的method回传0、error或是阵列。

4.错误处理
从版本1.3之后,错误处理已经整合至PclZip类别中,当一个method回传错误码,可以得知一些额外的讯息以方便错误处理:
* errorName():回传错误名称
* errorCode():回传错误码
* errorInfo():回传错误的描述

接下来会举几个例子来说明如何使用PclZip。

PclZip实例1、产生ZIP压缩档
PclZip($zipname):为PclZip constructor,$zipname为PKZIP压缩档的档名。
主要是产生一个PclZip物件,即一个PKZIP压缩档;但此时,只有压缩档产生出来,并做一些检查(例如是否有开启zlib extension…等),除此之外,并没有做其他动作。

create($filelist, [optional arguments list]):将参数$filelist指定的档案或目录(包含当中所有档案与子目录)加入上述所产生的压缩档中。
而非必要的参数则能够修改压缩档内的档案存放路径。
此method可用的参数可以参考网志(www.phpconcept.net/pclzip/man/en/index.php)。

下面的示例说明如何产生PKZIP压缩档(档名为archive.zip),并将file.txt、data/text.txt以及目录 folder(包含当中的档案与子目录)加入刚刚产生的archive.zip中:

用法一:

<?
include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('file.txt,data/text.txt,folder');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>

用法二:

下面的示例说明基本上与上例一样产生archive.zip,但在将file.txt与text.txt压缩于其中时,将路径由data/改为 install/ ;因此,在archive.zip中这两个档案的路径会是install/file.txt与install/text.txt

<?
include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('data/file.txt,data/text.txt',PCLZIP_OPT_REMOVE_PATH, 'data',PCLZIP_OPT_ADD_PATH, 'install');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>

PclZip实例2、列出压缩档内容

listContent( ) :列出压缩档中的内容,包括档案的属性与目录:

<?PHP
include_once('pclzip.lib.php');
$zip = new PclZip("test.zip");if (($list = $zip->listContent()) == 0) {
die("Error : ".$zip->errorInfo(true));
}for ($i=0; $i<sizeof ($list); $i++) {for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {echo "File $i / [$key] = ".$list[$i][$key]."<br>";}echo "<br />";
}
?>

上例将会回传结果:
File 0 / [filename] = data/file1.txt
File 0 / [stored_filename] = data/file1.txt
File 0 / [size] = 53
File 0 / [compressed_size] = 36
File 0 / [mtime] = 1010440428
File 0 / [comment] =
File 0 / [folder] = 0
File 0 / [index] = 0
File 0 / [status] = ok

File 1 / [filename] = data/file2.txt
File 1 / [stored_filename] = data/file2.txt
File 1 / [size] = 54
File 1 / [compressed_size] = 53
File 1 / [mtime] = 1011197724
File 1 / [comment] =
File 1 / [folder] = 0
File 1 / [index] = 1
File 1 / [status] = ok

PclZip实例3、解压缩档案
extract([options list]) :解压缩PKZIP中的档案或目录。
[options list]可用的参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。这些参数能让使用者在解压 缩的时候有更多的选项,譬如指定变更解压缩档案的路径、指定只解压缩某些档案或不解压缩某些档案或者是将档案解压缩成字串输出(可用于readme档)。

下例是一个简单的解压缩档案示例,将压缩档archive.zip内的档案解压缩至目前的目录:

<?PHP
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');if ($archive->extract() == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>

下例是进阶的解压缩档案使用,archive.zip中所有档案都解压缩于data/中,而特别指明在install/release中的所有档案也直接 丢于data/中,而非data/install/ release:

<?PHP
include('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->extract(PCLZIP_OPT_PATH, 'data',PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>

看见create方法的参数没有,再看看方法原型你就知道如何做了。至少我还没有这样用过。

相关文档:
PclZip官方地址 :http://www.phpconcept.net/pclzip/index.php
PclZip手册地 址 :http://www.phpconcept.net/pclzip/man/en/index.php
PEAR类创建 ZIP档案文件 :http://www.ccvita.com/10.html
PclZip简介与 使用 :http://www.ccvita.com/59.html
PclZip:强大 的PHP压缩与解压缩zip类 :http://www.ccvita.com/330.html

PclZip:强大的PHP压缩与解压缩zip类相关推荐

  1. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例

    本文实例讲述了Java实现的zip压缩及解压缩工具类.分享给大家供大家参考,具体如下: import java.io.BufferedInputStream; import java.io.Buffe ...

  2. pythonzip压缩字符串_Python压缩与解压缩ZIP文件的实现方法

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现压缩和解 ...

  3. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...

  4. python压缩教程_如何使用Python压缩/解压缩zip文件?(代码示例)

    在批量交换大文件和多个文件时,使用zip文件是非常方便的.下面本篇文章就来带大家认识解一下zip文件,介绍使用Python压缩或解压缩zip文件的方法,希望对大家有所帮助.[视频教程推荐:Python ...

  5. 利用Java进行zip文件压缩与解压缩

    可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...

  6. Linux常用命令——压缩与解压缩命令

    常用压缩格式:  .zip   .gz   .bz2   .tar.gz   .tar.bz2 1..zip格式压缩 zip 压缩文件名 源文件压缩文件 zip -r 压缩文件名 源目录压缩目录 un ...

  7. 七、压缩与解压缩命令

    linux常用压缩格式:.zip              .gz                    .bz2 linux常用压缩格式:.tar.gz         .tar.bz2 其实我个人 ...

  8. Java 文件压缩与解压缩

    Java IO类库中有提供可以压缩与解压缩的类,其中使用最为广泛的是Zip和GZip,使用这两个类可以很方便的压缩数据. 1.使用Gzip进行简单的文件压缩 GZIP接口相对比较简单,如果只要对单个文 ...

  9. 解压缩后点击解压.html,如何使用压缩、解压缩软件(WINRAR、ZIP)进行文件的压缩和解压...

    首先,我们来了解一下啥是压缩文件和解压缩文件! 压缩文件:简单的讲,就是被压缩过的文件! 解压文件:对被压缩过的文件进行解压,让其恢复到原来没被压缩的状态! 为什么要压缩文件? 这与现实生活就有点相悖 ...

最新文章

  1. 把view或者div绘制 canvas ,导出图片功能实现完整源码附效果图(兼容H5和小程序)
  2. 服务器更改文件夹权限,云服务器如何修改文件权限
  3. HDU 2079-课程时间(生成函数)
  4. linux+dhcp服务的安装包,服务器_Linux教程:配置DHCP服务器方法介绍,  1.安装dhcp软件包 #rpm nd - phpStudy...
  5. 查看CentOS的版本信息
  6. vSphere ESX 4 安装图解
  7. CM: 如何通过attachment的physical instance id反查到所属的business object ID
  8. 窗口类的注册生成和消息循环
  9. ML.NET机器学习、API容器化与Azure DevOps实践(四):持续集成与k8s持续部署
  10. 专题突破二之优先队列、st表——,Running Median,Sequence,Buy Low Sell High,数据备份,超级钢琴,ZQC的手办
  11. Linux系统中解压缩指令汇总
  12. matlab语音去除白噪声_全国首款“AI语音电梯”亮相海淀医院、北医三院
  13. CodeLite+TDM-GCC调试C++程序,断点无效问题
  14. Atitit 操作系统原理索引 目录 1. 操作系统原理(cpu,process,mem,file,device mana) 1 1.1. 第1章 操作系统概述 1 2. 处理器管理 2 2.1.
  15. 清除1188.com
  16. 什么是promise?
  17. MATLAB 正态(高斯)分布概率密度函数
  18. 把软件装进U盘,真正做到即插即用
  19. idea里的包移不动_IDEA 半天卡住buid(编译)不动——解决办法及定位思路
  20. 常用图标png、ico 图标下载,图片格式转换为ico

热门文章

  1. 信息学奥赛一本通C++语言——1087:级数求和
  2. 一个数的二进制中有多少个1
  3. 44 SD配置-销售凭证设置-定义状态参数文件
  4. 38 MM配置-采购-采购订单-采购订单审批-定义采购订单审批过程
  5. oracle 添加监听地址,oracle批改监听地址为localhost
  6. sqllite java 代码,非常简单的SQLite的Java程序
  7. 96KB存储器的怎么算地址范围_产品条码怎么申请费用
  8. Spark streaming 概述
  9. Hbuilder 左侧项目栏文件打开方式(单击?双击?) - 设置篇
  10. js (查重)键值对数组(一维数组),并归类计数