压缩文件
$zip = new ZipArchive(); // 打开一个zip文档,ZipArchive::OVERWRITE:如果存在这样的文档,则覆盖;ZipArchive::CREATE:如果不存在,则创建 $res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE); if($res) { // 添加 a.txt 到压缩文档 $zip->addFile('a.txt'); // 添加一个字符串到压缩文档中的b.txt $zip->addFromString('b.txt', 'this is b.txt'); // 添加一个空目录b到压缩文档 $zip->addEmptyDir('b'); } // 关闭打开的压缩文档 $zip->close();
压缩文件夹
/** * @param $dir 目标目录路径 * @param $zip ZipArchive类对象 * @param $prev */ function compressDir($dir, $zip, $prev='.') { $handler = opendir($dir); $basename = basename($dir); $zip->addEmptyDir($prev . '/' . $basename); while($file = readdir($handler)) { $realpath = $dir . '/' . $file; if(is_dir($realpath)) { if($file !== '.' && $file !== '..') { $zip->addEmptyDir($prev . '/' . $basename . '/' . $file); compressDir($realpath, $zip, $prev . '/' . $basename); } }else { $zip->addFile($realpath, $prev. '/' . $basename . '/' . $file); } } closedir($handler); return null; } $zip = new ZipArchive(); $res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE); if($res) { compressDir('./test', $zip); $zip->close(); }
解压缩
$zip = new ZipArchive(); $res = $zip->open('test1.zip'); if($res) { // 解压缩文件到指定目录 $zip->extractTo('test'); $zip->close(); }
下载
header('Content-Type:text/html;charset=utf-8'); header('Content-disposition:attachment;filename=test.zip'); $filesize = filesize('./test.zip'); readfile('./test.zip'); header('Content-length:'.$filesize); unlink('./test.zip');
发表评论