如何用PHP脚本和PEAR类创建ZIP档案文件

网络整理 - 07-26

在开发Web应用程序时,很有可能您会遇到不同格式的文件——CSV数据、密码文件、XML编码的内容和不同形式的二进制的数据。您的PHP脚本将需要频繁地和这些文件交互,从中读取数据和将数据写入其中。由于有这么些格式的文件要处理,所以您就不要意外PHP中有那么多种类型的内置函数和外部的库,用来连接和使用几乎所有您能说出名称的文件格式。

这篇指南就是关于这样一种文件格式的,可能应用程序开发者几乎每天都会遇到这种文件:ZIP格式。一般这种格式是用来通过电子邮件和远程连接传输文件的,能够将多个文件压缩到一个档案文件中,因此,减少了文件的硬盘占据空间,并且能够更容易地移动它们。PHP通过它的ZZipLib插件和PEAR的Archive_Zip类都可以读取和创建这些ZIP文件。

我将假设您已经有了正常运行的Apache,安装了PHP,并且PEAR Archive_Zip class类已经正确安装了。

注意:您可以直接从网上安装PEAR Archive_Zip程序包,要么下载它,还可以利用提供的指示。

创建ZIP档案文件

让我们从一个简单的例子开始:动态地创建一个包括几个其他文件的ZIP档案文件。以列表A中的脚本开始。

列表A

<?php
include ('Archive/Zip.php');        // imports

$obj = new Archive_Zip('test.zip'); // name of zip file

$files = array('mystuff/ad.gif',
               'mystuff/alcon.doc',
               'mystuff/alcon.xls');   // files to store

if ($obj->create($files)) {
    echo 'Created successfully!';
} else {
    echo 'Error in file creation';
}
?>

这个脚本非常简单,但是值得仔细看一下:

首先,第一步是创建一个Archive_Zip类的实例,然后用将要创建的档案文件的路径和名称将其初始化。在这个例子中,档案文件被命名为test.zip,位于当前目录下。

接着,初始化一个数组,列出将要被压缩的文件,和它们在硬盘中的位置一起保存其中;这些位置用绝对或相对术语列入,但是,一个关键的要考虑的事项是脚本对那些文件或磁盘的位置要有读取的权限。

最后,用create()方法通过压缩和合并指定的文件来实际构建档案文件。这个方法接受文件列表作为输入,然后返回一个布尔逻辑值指示档案文件是否被成功创建。注意脚本在文件被创建的目录下必须有写入特权是非常重要的,否则create()方法将失败;这是一个普遍的,也让大部分新手失败的错误。

现在,在修改了源文件列表和目标文件位置来反映您的本地系统配置之后,试着运行上面的脚本。如果一切顺利的话,Archive_Zip应该可以找到您所列出的、并压缩到名为test.zip的ZIP档案文件中的文件。