php版本>=5.2 ,zip扩展版本>=1.1.0
//$zip_file 压缩包路径,$files 需要加入压缩包的文件路径
function file_download($zip_file,$files)
{
//创建压缩包
$zip = new ZipArchive;
if($zip->open($_SERVER['DOCUMENT_ROOT'].$zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE )===true){
foreach($files as $val){
if(file_exists($_SERVER['DOCUMENT_ROOT'].$val)){
//将文件加入到压缩包
$zip->addFile($_SERVER['DOCUMENT_ROOT'].$val,array_pop(explode("/",$val)));
}
}
$zip->close();
//开始下载
$file_name = $_SERVER['DOCUMENT_ROOT'] . $zip_file; //需要下载的文件
header ( "Cache-Control: max-age=0" );
header ( "Content-Description: File Transfer" );
header ( 'Content-disposition: attachment; filename=' . basename ( $file_name ) ); // 文件名
header ( "Content-Type: application/zip" ); // zip格式的
header ( "Content-Transfer-Encoding: binary" ); // 告诉浏览器,这是二进制文件
header ( 'Content-Length: ' . filesize ( $file_name ) ); // 告诉浏览器,文件大小
@readfile ( $file_name );//输出文件;
}else{
return false;
}
}