`

PclZip:强大的PHP压缩与解压缩zip类

阅读更多

 

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代码 
  1. <?PHP  
  2.          require_once('pclzip.lib.php');  
  3.          $archive = new PclZip("archive.zip");  
  4. ?>  
 

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

 

 

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

 

 

Php代码 
  1. <?PHP  
  2.          require_once('pclzip.lib.php');  
  3.          $archive = new PclZip('archive.zip');  
  4.    
  5.          $v_list = $archive->add('dev/file.txt',  
  6.                                     PCLZIP_OPT_REMOVE_PATH, 'dev');  
  7. ?>  
 

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

 

Php代码 
  1. <?PHP  
  2.          $list = $archive->extract(PCLZIP_OPT_PATH, "folder",  
  3.                           PCLZIP_OPT_REMOVE_PATH, "data",  
  4.                                 PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",);  
  5. ?>  
 

上例中原本压缩档内档案存放的路径为/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中:

 

 
用法一:

 

Php代码 
  1. <?   
  2. include_once('pclzip.lib.php');  
  3.  $archive = new PclZip('archive.zip');  
  4.  $v_list = $archive->create('file.txt,data/text.txt,folder');  
  5.  if ($v_list == 0) {  
  6.  die("Error : ".$archive->errorInfo(true));  
  7.  }  
  8. ?>  
 

用法二:

 

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

 

Php代码 
  1. <?   
  2. include_once('pclzip.lib.php');  
  3.  $archive = new PclZip('archive.zip');  
  4.  $v_list = $archive->create('data/file.txt,data/text.txt',  
  5.  PCLZIP_OPT_REMOVE_PATH, 'data',  
  6.  PCLZIP_OPT_ADD_PATH, 'install');  
  7.  if ($v_list == 0) {  
  8.  die("Error : ".$archive->errorInfo(true));  
  9.  }  
  10. ?>  

 

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

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

 

Php代码 
  1. <?PHP  
  2.         include_once('pclzip.lib.php');  
  3.         $zip = new PclZip("test.zip");  
  4.    
  5.         if (($list = $zip->listContent()) == 0) {  
  6.         die("Error : ".$zip->errorInfo(true));  
  7.         }  
  8.    
  9.         for ($i=0; $i<sizeof ($list); $i++) {  
  10.             for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {  
  11.                 echo "File $i / [$key] = ".$list[$i][$key]."<br>";  
  12.             }  
  13.             echo "<br />";  
  14.         }  
  15. ?>  
 

上例将会回传结果:
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代码 
  1. <?PHP  
  2.         require_once('pclzip.lib.php');  
  3.         $archive = new PclZip('archive.zip');  
  4.    
  5.    
  6.         if ($archive->extract() == 0) {  
  7.             die("Error : ".$archive->errorInfo(true));  
  8.         }  
  9. ?>  
 

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

 

Php代码 
  1. <?PHP  
  2.         include('pclzip.lib.php');  
  3.         $archive = new PclZip('archive.zip');  
  4.         if ($archive->extract(PCLZIP_OPT_PATH, 'data',  
  5.                   PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {  
  6.                                 die("Error : ".$archive->errorInfo(true));  
  7.         }  
  8. ?>  
 

 

 

看见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压缩解压工具) 2.8.2.zip

    PclZip能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。由于能够在伺服器端进行压缩与解压缩的动作,所以相当方便使用。 ...

    PHP借助pclzip类对文件压缩和解压

    要解压缩一个.zip文件,可以使用`pclzip_list_content()`获取文件列表,然后使用`pclzip_extract()`提取文件。例如,解压缩`compressed_files.zip`到`extracted_files`目录: ```php $archive_path = '...

    pclzip压缩文件上传

    PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。同时也可以...

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

    PclZip是一个针对PHP开发的高效、强大且易于使用的压缩与解压缩库,它专门处理ZIP格式的文件。这个库能够创建新的ZIP文件,列出ZIP文件的内容,以及提取ZIP文件中的文件。由于其简单、易用的特性,PclZip在PHP开发中...

    PclZip(PHP压缩解压工具) v2.8.2.zip

    PclZip能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。由于能够在伺服器端进行压缩与解压缩的动作,所以相当方便使用。 ...

    php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)

    PCLZip是一个功能强大的PHP类库,用于处理ZIP格式的压缩和解压缩操作。在本文中,我们将深入探讨如何使用PCLZip类来实现文件的压缩。 首先,为了使用PCLZip库,你需要下载其源代码包。这个库可以从官方网站或其他...

    PHP在线解压缩zip程序

    3. 调用PCLZip库:使用PCLZip的API读取并解压缩ZIP文件,可能涉及到遍历ZIP内的所有文件,处理每个文件的权限、编码等问题。 4. 解压文件:将ZIP内的每个文件解压缩到服务器的特定目录,可以是用户指定的,也可以是...

    php解压缩函数

    以下是一个简单的使用`ZipArchive`解压缩ZIP文件的例子: ```php &lt;?php $zip = new ZipArchive(); if ($zip-&gt;open('path/to/yourfile.zip') === TRUE) { // 提取ZIP文件到当前目录 $zip-&gt;extractTo('.'); // ...

    PclZip(PHP压缩解压工具).7z

    PclZip是一款强大的PHP库,专门用于处理ZIP压缩文件的创建、解压缩和管理。它提供了丰富的功能,使得在PHP环境中处理压缩文件变得相当简单。PclZip库由Pierre-Louis Laporte开发,旨在为PHP程序员提供一个轻量级且...

    PHP在线解压缩

    例如,`index.php`可以接收GET或POST参数来指定要解压缩的ZIP文件和目标路径,然后调用PCLZip库进行处理。 6. **安全性与优化** 在实际应用中,要注意防止恶意用户上传和解压缩含有恶意代码的ZIP文件。应确保只...

    PHP在线快速压缩解压ZIP文件

    这通常是一个网站的入口文件,它可能包含了与用户交互的界面以及调用PCLZip库进行压缩或解压操作的代码。例如,你可以创建HTML表单让用户选择ZIP操作类型(压缩或解压),上传文件,然后通过PHP处理这些请求。 ```...

    在线解压缩php文件

    PHP的`ZipArchive`类是实现在线解压缩的核心。通过实例化`ZipArchive`对象,你可以打开一个现有的ZIP文件,然后逐个提取其内部的文件。以下是一个基本的解压过程: ```php $zip = new ZipArchive; if ($zip-&gt;...

    在线解压缩工具

    在线解压缩工具是一种便捷的服务,它允许用户在无需安装任何软件的情况下,通过互联网对压缩文件进行操作,如ZIP、RAR等格式。这类工具通常具备上传、解压、查看和下载文件的功能,对于处理电子邮件附件、在线协作...

    [文件数据]无组件在线解压缩php免费版(能解zip和gz文件)_spzip101.zip

    【标题】中的“无组件在线解压缩php免费版(能解zip和gz文件)”表明这是一个基于PHP的在线解压缩工具,能够处理ZIP和GZ格式的压缩文件。这个工具可能是通过PHP编程语言实现的,无需额外安装任何组件,可以在服务器端...

    php在线解压缩程序

    在IT行业中,PHP是一种...综上所述,创建一个PHP在线解压缩程序需要对PHP的ZipArchive类有深入理解,同时注意处理RAR文件可能需要额外的库或扩展。在实现过程中,务必注重安全性和用户体验,以提供稳定可靠的在线服务。

    基于PHP的在线解压压缩PHP脚本源码.zip

    3. **解压缩**:使用PHP的`unzipfile`或`ZipArchive`类来解压文件。如果解压过程中遇到密码保护或分卷ZIP,可能需要额外处理。 4. **安全考虑**:防止恶意文件注入,确保解压后的文件保存在安全的目录,并限制访问...

    asp-php在线解压缩

    对于在线解压缩,PHP可以通过内置的函数如`gzdecode`和`file_get_contents`,或者第三方库如`PclZip`来实现对ZIP、GZ等格式的压缩文件进行解压。 **在线解压缩原理**: 在线解压缩的基本流程包括以下几个步骤: 1. ...

    PHP在线解压缩的程序.rar

    `PclZip`是一个轻量级的库,提供了丰富的API来创建、读取、修改和解压缩ZIP文件。`ZipArchive`是PHP内建的类,支持ZIP文件的操作。使用这两个库,我们可以在PHP代码中实现解压缩的功能。 例如,使用`ZipArchive`,...

Global site tag (gtag.js) - Google Analytics