如何使⽤php⽣成zip压缩包⽬录
压缩⼀个⽂件
压缩多个⽂件
压缩⼀个⽬录
压缩并下载zip包
压缩⼀个⽂件
我们将⼀个⽂件⽣成⼀个压缩包。
<?php
$path = "c:/wamp/";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);  //打开压缩包
$zip->addFile($path,basename($path));  //向压缩包中添加⽂件
$zip->close();  //关闭压缩包
上述代码将c:/wamp/⽂件压缩⽣成了test.zip,并保存在当前⽬录。
压缩多个⽂件
压缩多个⽂件,其实就是addFile执⾏多次,可以通过数组的遍历来实现。
<?php
国内php空间$fileList = array(
"c:/wamp/",
"c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);  //打开压缩包
foreach($fileList as $file){
$zip->addFile($file,basename($file));  //向压缩包中添加⽂件
}
$zip->close();  //关闭压缩包
压缩⼀个⽬录
<?php
function addFileToZip($path,$zip){
$handler=opendir($path); //打开当前⽂件夹由$path指定。
while(($filename=readdir($handler))!==false){
if($filename != "." && $filename != ".."){//⽂件夹⽂件名字为'.'和‘..',不要对他们进⾏操作
if(is_dir($path."/".$filename)){// 如果读取的某个对象是⽂件夹,则递归
addFileToZip($path."/".$filename, $zip);
}else{ //将⽂件加⼊zip对象
$zip->addFile($path."/".$filename);
}
}
}
@closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
addFileToZip('rsa/', $zip); //调⽤⽅法,对要打包的根⽬录进⾏操作,并将ZipArchive的对象传递给⽅法
$zip->close(); //关闭处理的zip⽂件
}
压缩并下载zip包
我的时候,我们需要打包之后,提供下载,然后删除压缩包。
可以分为以下⼏步:
1. 判断给出的路径,是⽂件夹,还是⽂件。⽂件夹还需要遍历添加⽂件。
2. 设置相关⽂件头,并使⽤readfile函数提供下载。
3. 使⽤unlink函数删除压缩包
<?php
function addFileToZip($path,$zip){
$handler=opendir($path); //打开当前⽂件夹由$path指定。
while(($filename=readdir($handler))!==false){
if($filename != "." && $filename != ".."){//⽂件夹⽂件名字为'.'和‘..',不要对他们进⾏操作
if(is_dir($path."/".$filename)){// 如果读取的某个对象是⽂件夹,则递归
addFileToZip($path."/".$filename, $zip);
}else{ //将⽂件加⼊zip对象
$zip->addFile($path."/".$filename);
}
}
}
@closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
$path = 'rsa/';
if(is_dir($path)){  //给出⽂件夹,打包⽂件夹
addFileToZip($path, $zip);
}else if(is_array($path)){  //以数组形式给出⽂件路径
foreach($path as $file){
$zip->addFile($file);
}
}else{      //只给出⼀个⽂件
$zip->addFile($path);
}
$zip->close(); //关闭处理的zip⽂件
}
以上就是如何使⽤php⽣成zip压缩包的详细内容,更多关于php⽣成zip压缩包的资料请关注其它相关⽂章!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。