PHP 压缩文件夹

来源:互联网 发布:淘宝网店开店流程2017 编辑:程序博客网 时间:2024/06/15 18:33
/**
* @param $path 文件夹路径
* @param $zip 压缩后zip名字及路径
*/
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);

}

//调用

/**
* 根据路径压缩文件夹
*/
function mkZip()
{
$zip = new \ZipArchive();
$time = date("YmdHis");
$zipname = $time . '.zip';
if ($zip->open("$zipname", \ZipArchive::OVERWRITE) === TRUE) {
$this->addFileToZip('./Public/card/pic/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
$zip->close(); //关闭处理的zip文件
//设置打包完自动下载
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
$path = './Public/card/pic';
$this->deleteAll($path);
}
}

原创粉丝点击