php使用ZipArchive类压缩文件为zip格式
/**
* 功能:压缩文件并下载函数
* files: 需要压缩的文件,destination:压缩包名
* 注意:要求php5.0+ zip扩展1.7.0+
*/
function create_zip($files = array(),$destination = '') {
//这里需要注意该目录是否存在,并且有创建的权限
$zipname = $destination;
$valid_files = array();
//安全处理
if(is_array($files)) {
foreach($files as $file) {
//确认文件是否存在
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
if(empty($valid_files)){
throw new Exception('文件路径不存在');
}
//这是要打包的文件地址数组
$zip = new ZipArchive();
$res = $zip->open($zipname, ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($valid_files as $file) {
//这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名
$new_filename = substr($file, strrpos($file, '/') + 1);
$zip->addFile($file, $new_filename);
}
//关闭文件
$zip->close();
//这里是下载zip文件
header("Content-Type: application/zip");
// header("Content-Length: " . filesize($zipname));
header("Content-Disposition: attachment; filename="" . basename($zipname) . """);
// readfile($zipname);
return $zipname;
}
}
还不快抢沙发