、为了将文件夹的内容打包,需要循环操作,所以先建立一个函数,用于对子文件夹打包
//这个函数需要传递两个参数,第一个$path是当前操作的文件夹路径,第二个是ZipArchive对象
function addFileToZip($path, $zip)
{
2、打开当前操作的文件夹,并用一个变量指向它
//打开当前文件夹由$path指定。
$handler = opendir($path);
3、循环的读取文件夹下的所有文件和文件夹
/*
其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,为了不陷于死循环,所以还要让$filename !== false。
一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环
*/
while( ($filename = readdir($handler)) !== false )
{
4、文件夹下都会有两个文件,名字为'.'和‘..’,不要对他们进行操作
if($filename != "." && $filename != "..")
{
5、如果读取的某个对象是文件夹
// 对于文件夹,is_dir会返回FALSE,注意路径是$path."/".$filename
if(is_dir($path."/".$filename))
{
6、对于文件夹,再次调用函数addFileToZip,并将当前操作的文件夹路径传递给函数
addFileToZip($path."/".$filename, $zip);
7、如果读取的某个对象是文件
}else{
//将文件加入zip对象
$zip->addFile($path."/".$filename);
}
}
}
8、关闭当前操作的文件夹
//当前文件夹由$path指定。
closedir($path);
}
//以下是函数外的代码
9、新建一个ZipArchive的对象
$zip = new ZipArchive;
10、通过ZipArchive的对象处理zip文件
/*
$zip->open这个方法第一个参数表示处理的zip文件名。
第二个参数表示处理模式。如果参数使用ZipArchive::OVERWRITE,系统会覆盖掉原来的zip文件。
如果zip文件不存在,系统都会自动新建。
如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE
*/
if ($zip->open('test.zip', ZipArchive::OVERWRITE) === TRUE)
{
11、调用函数,对要打包的根目录进行操作,并将ZipArchive的对象传递给函数
addFileToZip('book/php', $zip);
12、关闭处理的zip文件
$zip->close();
}
以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询
上一篇:php将文件压缩成zip文件
下一篇:ASP.NET与IIS配置