- 浏览: 591195 次
文章分类
- 全部博客 (174)
- Core Java 学习 (6)
- Hibernate 学习 (3)
- Struts 学习 (3)
- Spring 学习 (9)
- EJB 学习 (0)
- 设计模式 (0)
- Oracle 学习 (6)
- JRuby (0)
- PHP (18)
- MySql (7)
- Apache (6)
- Informix (2)
- JSTL (1)
- CSS+HTML (8)
- Ajax (2)
- javaScript (16)
- reverse Ajax (1)
- Discuz (7)
- 网站 (11)
- SEO (5)
- Linux (4)
- ecshop (1)
- 电子商务 (1)
- 文档在线浏览 (18)
- 服务器技术 (10)
- flex (17)
- 用户体验 (1)
- java (1)
- flex+blazeDS (1)
- tomcat (1)
- 开发管理 (1)
最新评论
-
niaoqq1:
真坑爹,全是中文字符,复制全部报错!
<c:forEach 详解 -
jhys7s8jd:
pdf打印机下载http://www.onlinedown.n ...
命令行下转换word文档成PDF -
海豚12315:
flashPaper读取磁盘上的文件路径,
最好是放到某个系统 ...
在线文档阅读实现的解决方案 -
八月约克:
火狐不支持这个东东
Scripting.Dictionary的使用 -
longgol:
有一问:怎么通过flashPaper读取磁盘上的文件路径呢。我 ...
在线文档阅读实现的解决方案
用PHP脚本和PEAR类创建ZIP档案文件
- 博客分类:
- PHP
在开发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 这个脚本非常简单,但是值得仔细看一下: 首先,第一步是创建一个Archive_Zip类的实例,然后用将要创建的档案文件的路径和名称将其初始化。在这个例子中,档案文件被命名为test.zip,位于当前目录下。 最后,用create()方法通过压缩和合并指定的文件来实际构建档案文件。这个方法接受文件列表作为输入,然后返回一个布尔逻辑值指示档案文件是否被成功创建。注意脚本在文件被创建的目录下必须有写入特权是非常重要的,否则create()方法将失败;这是一个普遍的,也让大部分新手失败的错误。 现在,在修改了源文件列表和目标文件位置来反映您的本地系统配置之后,试着运行上面的脚本。如果一切顺利的话,Archive_Zip应该可以找到您所列出的、并压缩到名为test.zip的ZIP档案文件中的文件。 查看ZIP档案文件的内容 那么怎么样看到现有的ZIP档案文件中的内容呢?Archive_Zip lets让您通过它的listContent()方法也可以做到这一点。下面是一个例子(列表B): 列表B listContent()的输出是一个由数组组成的结构数组,每一个数组元素代表档案文件中的一个单独文件。通常,每一个元素中保存有相关的信息,例如对应文件的名字、它的索引位置、状态、大小(压缩后和压缩前的)和最近一次修改的时间。用一个循环可以很容易地将这些信息提取出来,还可以像列表B那样,重定它的格式,使其更好传输。下面是输出的一个示例(列表C): 列表C filename: mystuff/alcon.xls 向现有的ZIP档案文件中添加新文件 Archive_Zip类的一个有意思的特性就是它可以通过add()方法向现有的档案文件中添加新的文件。为了说明这一点,让我们回到test.zip,尝试对它添加新文件(列表D): 列表D 正如您所看到的那样,向一个现有的档案文件中添加新文件的程序和创建一个新的档案文件十分相似:初始化一个新的Archive_Zip对象指向问号代表的档案文件,创建一个数组代表将要添加的文件的列表,然后将这个数组输入add()方法。和create()方法一样,add()返回一个布尔逻辑信号来指示添加是否成功。和前面一样,一个主要的问题就是别忘了要有足够的权限:记得确保脚本有适当的权限来读取源文件,并将新压缩的档案文件写回到硬盘中。 从现有的ZIP档案文件中删除文件 和添加文件一样,您也可以删除文件。Archive_Zip类具有delete()方法,让您能够从现有的档案文件中移除文件。列表E说明了这一点。. 列表E 在这里,创建了一个待删除文件的数组,然后将其输入delete()方法。注意delete()调用中的特殊参数“by_name”:这告诉Archive_Zip只删除那些与文件名精确匹配的文件。如果删除成功,delete()方法返回真。 除了这种形式的有选择的删除之外,delete()方法也支持对与特定类型或正则表达式相匹配文件的大规模的摧毁。利用“by_ereg”或“by_preg”参数,Perl和PHP的正则表达式都支持。列表F是一个例子,用来说明怎样用这种方法,通过利用Perl的正则表达式来删除一个档案文件中所有的*.doc文件。 列表F 如以上的例子所示,PEAR的Archive_Zip类用途很多,只需要几行代码,就使您能够执行一些相当复杂的与ZIP文件的交互。但愿上面的示例脚本能够激发起您的灵感,告诉您如何在您的日常开发活动中使用这个类,并让您对用它进行试验产生兴趣。祝您编程开心!
< ?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';
}
?>
接着,初始化一个数组,列出将要被压缩的文件,和它们在硬盘中的位置一起保存其中;这些位置用绝对或相对术语列入,但是,一个关键的要考虑的事项是脚本对那些文件或磁盘的位置要有读取的权限。
< ?php
include ('Archive/Zip.php'); // imports
$obj = new Archive_Zip('test.zip'); // name of zip file
$files = $obj->listContent(); // array of file information
foreach ($files as $f) {
foreach ($f as $k => $v) {
echo "$k: $v\n";
}
echo "\n";
}
?>
stored_filename: mystuff/alcon.xls
size: 113664
compressed_size: 35902
mtime: 1141996836
comment:
folder:
index: 0
status: ok
< ?php
include ('Archive/Zip.php'); // imports
if (file_exists('test.zip')) {
$obj = new Archive_Zip('test.zip'); // name of zip file
} else {
die('File does not exist');
}
$files = array('otherstuff/montecarlo.png'); // additional files to store
if ($obj->add($files)) {
echo 'Added successfully!';
} else {
echo 'Error in file addition';
}
?>
< ?php
include ('Archive/Zip.php'); // imports
if (file_exists('test.zip')) {
$obj = new Archive_Zip('test.zip'); // name of zip file
} else {
die('File does not exist');
}
$files = array('mystuff/ad.gif', 'otherstuff/montecarlo.png'); // files to delete
if ($obj->delete(array('by_name' => $files))) {
echo 'Deleted successfully!';
} else {
echo 'Error in file deletion';
}
?>
< ?php
include ('Archive/Zip.php'); // imports
if (file_exists('test.zip')) {
$obj = new Archive_Zip('test.zip'); // name of zip file
} else {
die('File does not exist');
}
if ($obj->delete(array('by_preg' => "/.*doc$/"))) { // all DOC files
echo 'Deleted successfully!';
} else {
echo 'Error in file deletion';
}
?>
发表评论
-
php正则表达式 备忘
2014-06-15 02:44 701preg_match( "/([^<]+)&l ... -
php error_reporting
2011-09-05 19:44 1174error_reporting(255); 是 ... -
ecshop如何在后台管理左侧菜单添加新栏目并管理权限
2010-12-11 13:16 2589在对ecshop进行二次开发的时候,在后台增加一些功能,下面给 ... -
PHP5中Thread Safe(线程安全)None Thread Safe(NTS,非线程安全)的区别
2010-11-26 01:49 10221indows版的PHP 从版本5.2.1开始有Thread ... -
IIS用FastCGI方式安装PHP5.3教程
2010-11-21 15:11 6295php 5.3 出来已经有段时间了,手头有台新服务器正好安装 ... -
PHP 5.3不再支持ISAPI了 && IIS有了官方的FastCGI支持
2010-11-21 15:08 2001话说,一直犯懒没下载一个PHP 5.3,今天一时兴起打算更 ... -
Windows XP IIS PHP5详细配置
2010-11-01 17:47 158一、 软件准备 : ... -
值得推荐的 PHP 连接 mssql的文章
2010-10-25 17:18 7732文章是网上找的,从来没 ... -
php,几个有用的函数介绍
2010-09-24 15:54 902strtr strtr() 函数转换字符串中/数组中特定的字 ... -
cshop模板smarty foreach详解
2010-07-22 13:48 1789{foreach},{foreachelse} {forea ... -
关于UTF-8和GBK的字符截取函数
2010-02-24 02:07 1205以前在截取 字符 串的时候,字母和数字,都不会出现太多的问 ... -
在生产环境中使用php性能测试工具xhprof
2009-09-28 12:58 1145xhprof 是facebook开源出来的一个php性能测试 ... -
PHP性能优化的技巧
2009-09-28 12:50 1333关于require, inclu ... -
php 静态化页面 生成静态页面
2009-08-20 01:44 2229前言: 目前网络上好多 ... -
PHP语言中global和$GLOBALS[]的分析
2009-08-17 04:47 1555原来以为global和$GLOBALS除了写法不一样以为,其他 ... -
揭开正则表达式的神秘面纱
2009-03-25 14:16 966引言 正则表达式(regular expres ... -
css
2008-10-28 09:16 1040http://www.w3school.com.cn -
7种流行PHP集成开发工具(IDE)的比较
2008-08-05 00:50 2242本文发掘集成开发环境(IDE)的所有用途,并比较 7 种 ...
相关推荐
对于ZIP文件,PHP内建的`ZipArchive`类提供了创建、修改和读取ZIP文件的能力。你可以创建一个新的ZIP对象,然后通过添加文件或目录到该对象来构建ZIP文件。 实现RAR到ZIP的转换过程大致如下: 1. 检查上传的文件...
PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适用于Web开发,可嵌入到HTML中使用。这个特定的版本5.2.0是在PHP的发展历程中的一个早期版本,发布于2006年,它包含了当时PHP的一些核心功能和...
例如,Apache的mod_php模块可以解析PHP脚本,通过修改httpd.conf配置文件,将PHP解释器路径指向php5apache2_2.dll。 3. **数据库连接**:使用PHP的mysqli或PDO扩展,通过libmysql.dll等驱动,可以轻松连接并操作...
此外,压缩包中的go-pear.bat文件是PEAR(PHP Extension and Application Repository)的安装脚本,PEAR是PHP的一个扩展库,提供了一系列的工具和类库,方便开发者进行PHP开发。如果需要使用PEAR,只需运行此脚本,...
描述中的 "php-5.2.13-Win32.zip" 重复了标题,暗示这是一个用于Windows操作系统的PHP安装包,以ZIP格式压缩,方便下载和解压使用。 标签 "php-5.2.13-Win32.zip" 同样是对压缩包内容的简要描述,用于标记和分类该...
【PHP 5.3.1 Zip压缩包详解】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适用于Web开发,并可嵌入HTML中。...同时,提供的PEAR安装脚本和PHAR工具,有助于进一步优化开发流程和项目维护。
1. `go-pear.bat`:这是PEAR(PHP Extension and Application Repository)的安装脚本,PEAR是PHP的一个扩展库和工具集,提供了许多实用的类库和工具,用于帮助开发和管理PHP项目。 2. `php5ts.dll`:这是一个动态...
此外,还有PEAR安装脚本和文件比较工具,这些对于Web开发者来说都是重要的工具。然而,考虑到PHP 5.2系列已经非常老旧,不再受到官方支持,因此在生产环境中使用可能会带来安全风险。现代的Web开发通常推荐使用更新...
ZipArchive类是PHP内置的一个扩展,用于创建和修改ZIP存档文件。以下是使用ZipArchive类进行基本操作的详细步骤。 1. 打开ZIP文件: - 使用ZipArchive类的open()方法打开指定的ZIP压缩文件。如果文件成功打开,该...
1. **go-pear.bat**:这是一个批处理文件,用于在PHP环境中安装PEAR(PHP Extension and Application Repository),这是一个PHP的扩展管理和分发框架,包含了大量预定义的类库和工具。 2. **php5ts.dll**:这是PHP...
这些组件共同构成了一个能够运行PHP脚本并与其他服务(如数据库)交互的基础环境。对于开发者而言,这意味着他们可以利用这个包快速搭建一个本地PHP开发环境,或者部署到支持这些特定组件的服务器上。
1. **go-pear.bat**:这是一个批处理文件,用于安装PEAR(PHP扩展和应用框架),是PHP的一个包管理器,可以帮助安装和管理PHP类库和工具。 2. **phar.phar.bat**:Phar是PHP的归档格式,用于将多个文件打包成单个PHP...
最后,启动Apache服务器,并通过访问"http://localhost/phpinfo.php"(phpinfo.php是一个简单的PHP脚本,用于显示PHP配置信息)来检查PHP是否正确安装和配置。如果页面能正常显示PHP信息,那么恭喜你,你已经成功地...
PEAR(PHP Extension and Application Repository)是PHP的扩展和应用库,提供了一系列预打包的PHP类和函数,便于开发人员使用。 标签"appserv-win32-2.5.9.zip"进一步确认了这个压缩包的内容和目标平台。标签通常...
标题“php-5.3.5-Win32-VC9-x86.zip”表明这是一个针对Windows 32位系统的PHP版本,具体是5.3.5,它使用了Visual C++ 9(即VC9)编译器进行构建。在IT领域,PHP是一种广泛使用的服务器端脚本语言,主要应用于Web开发...
1. **go-pear.bat**:这通常是PEAR(PHP Extension and Application Repository)安装脚本,用于在PHP环境中安装和管理PHP扩展。PEAR是PHP的一个库,提供了大量的预编译代码,可以帮助开发者快速构建应用。 2. **...
1. `go-pear.bat`:这是PEAR(PHP Extension and Application Repository)的安装脚本,PEAR是PHP的包管理和分发框架,提供了大量的库和工具,帮助开发者编写和维护PHP代码。 2. `phar.phar.bat`:PHAR(PHP ...
PEAR是PHP的一个扩展管理和分发系统,提供了一系列工具和库,方便开发者管理和使用PHP扩展。 2. `php5ts.dll`:这是PHP的线程安全(TS)版本的动态链接库。在Windows上,如果你打算在IIS或其他多线程环境中运行PHP...
总结起来,这个"php-5.2.3-Win32.zip"压缩包包含了运行PHP 5.2.3版本在Windows环境下的基本组件,如PHP解释器、数据库连接库、加密库以及PEAR安装脚本。这些文件使得用户能够搭建一个支持数据库连接、加密功能和可能...