PclZip(php在线压缩类)中文手册
来源:昆明网络公司 日期:2010-09-15 阅读: 发表评论
介绍
PclZip library 能够压缩与解压缩 Zip 格式的压缩档(WinZip、PKZIP);且能对此类类档桉进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档桉等等。由于能够在伺服器端进行压缩与解压缩的动作,所以相当方便使用。
PclZip 定义一个 PclZip 类别,其类别物件可视为一个 ZIP 档桉,亦提供method 来进行处理。
如何使用
基础
所有的功能都由 pclzip.lib.php 这个档桉提供,PclZip library可于其首页(www.phpconcept.net/pclzip/index.en.php)下载。所有的 PKZIP 档桉其实就是一个 PclZip 的类别物件。当产生一个PclZip 档桉(i.e., PclZip 类别物件),就会先产生一个压缩档,且档名已经指定,但此压缩档的内容尚未存在:
require_once('pclzip.lib.php');
$archive = new PclZip("archive.zip");
?>
此物件提供了一些 public method 可用来处理此档桉。
参数
每一个 method 有其各自可使用的参数,包括有必须与非必须的参数:
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 也可以只包含非必须的参数:
$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)。
回传值
每个 method 所回传的值可能会不同,将会在每个 method 中说明。不过大部分的method回传0、error或是阵列。
错误处理
从版本1.3之后,错误处理已经整合至 PclZip 类别中,当一个 method 回传错误码,可以得知一些额外的讯息以方便错误处理:
* errorName():回传错误名称
* errorCode():回传错误码
* errorInfo():回传错误的描述
范例
接下来会举几个例子来说明如何使用 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));
}
?>
2、列出压缩档内容
listContent( ) :列出压缩档中的内容,包括档桉的属性与目录:
include_once('pclzip.lib.php');
$zip = new PclZip("test.zip");
if (($list = $zip->listContent()) == 0) {
die("Error : ".$zip->errorInfo(true));
}
for ($i=0; $i
echo "File $i / [$key] = ".$list[$i][$key]."
";
}
echo "
";
}
?>
上例将会回传结果:
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
3、解压缩档桉
extract([options list]) :解压缩 PKZIP 中的档桉或目录。
[options list] 可用的参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。这些参数能让使用者在解压缩的时候有更多的选项,譬如指定变更解压缩档桉的路径、指定只解压缩某些档桉或不解压缩某些档桉或者是将档桉解压缩成字串输出(可用于 readme 档)。
下例是一个简单的解压缩档桉范例,将压缩档 archive.zip 内的档桉解压缩至目前的目录:
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:
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));
}
?>
参数:PCLZIP_OPT_REMOVE_PATH, 'install/release' 也可以忽略。直接解压到data文件夹中
发表评论评论列表(有 条评论)