PHP实现zip压缩打包下载

先来看PHP实现文件及文件夹的zip压缩

这里使用PHP扩展的ZipArchive类,在使用之前要将php.ini文件中的zlib.output_compression设置为On

代码如下:

public function addFileToZip($path, $current, $zip) { // 打开文件夹资源 $handler = opendir($path); // 循环读取文件夹内容 while(($filename = readdir($handler)) !== false) { // 过滤掉Linux系统下的.和..文件夹 if ($filename != '.' && $filename != '..') { // 文件指针当前位置指向的如果是文件夹,就递归压缩 if (is_dir($path.'http://www.likecs.com/'.$filename)) { $this->addFileToZip($path.'http://www.likecs.com/'.$filename, $filename, $zip); }else { // 为了在压缩文件的同时也将文件夹压缩,可以设置第二个参数为文件夹/文件的形式,文件夹不存在自动创建压缩文件夹 $zip->addFile($path.'http://www.likecs.com/'.$filename, $current.'http://www.likecs.com/'.$filename); } } } @closedir($handler); } $zipName = 'your zip file path'; // 如果压缩文件不存在,就创建压缩文件 if (! is_file($zipName)) { $fp = fopen($zipName, 'w'); fclose($fp); } $zip = new \ZipArchive(); // OVERWRITE选项表示每次压缩时都覆盖原有内容,但是如果没有那个压缩文件的话就会报错,所以事先要创建好压缩文件 // 也可以使用CREATE选项,此选项表示每次压缩时都是追加,不是覆盖,如果事先压缩文件不存在会自动创建 if ($zip->open($zipName, \ZipArchive::OVERWRITE) === true) {
        $current = 'uplaods/'; // 你要压缩的文件的主目录
$compress->addFileToZip($path, $current, $zip); $zip->close(); }else { exit('下载失败!'); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfggz.html