php可以将服务器的文件夹或多个文件压缩成一个ZIP压缩包,并进行下载,具体的压缩操作方法可以参考下面的方法。

php压缩单个文件的方法

php可以对某个指定的文件进行压缩,只要指定被压缩文件的路径即可!

示例代码:

<?php
$path = "robots.txt"; //要压缩的文件
$filename = "txt.zip"; //压缩后的文件
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);  //打开压缩包
$zip->addFile($path,basename($path));  //向压缩包中添加文件
$zip->close(); //关闭压缩包
?>

php压缩多个文件的方法

php压缩多个文件时,只要把要压缩的所有文件路径都添加到压缩包即可,可以参考下面的示例代码!

示例代码:

<?php
$files = array(
    'xiazaiad1.jpg',
    'xiazaiad2.jpg',
    'robots.txt'
); //被压缩的所有文件
$filename = "t.zip"; //压缩后的文件名
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);
foreach ($files as $file) {
    $zip->addFile($file,basename($file)); 
}
$zip->close();
?>

php压缩整个文件夹的方法

php压缩整个文件夹,需要单独自定义一个函数把要压缩文件夹内的所有文件写入到压缩包中!

示例代码:

<?php
function addFileToZip($path,$zip){
    $handler = opendir($path);
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){
            if(is_dir($path."/".$filename)){
                addFileToZip($path."/".$filename, $zip);
            }else{
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip = new ZipArchive();
$zipname = 'file.zip'; //压缩后文件名
$zip->open($zipname, ZipArchive::CREATE);
$zip_file = 'zb_users/'; //要压缩的文件路径
addFileToZip($zip_file, $zip);
$zip->close();
?>