function output_zip($files,$name_map){//files是需要压缩的文件名称数组,name_map的key是压缩文件名,value是需要更换的文件名 $zipname = 'tmp.zip'; $zipObj = new ZipArchive(); if($zipObj->open($zipname, ZipArchive::CREATE) === true){ $res = false; foreach($files as $row){ $file = 'tmp/'.$row; $res = $zipObj->addFile($file); $zipObj->renameName($file,$name_map[$row]);//这个是重点替换文件名 } $zipObj->close(); if($res){ header ("Cache-Control: max-age=0"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment;filename =" .$zipname); header('Content-Type: application/zip'); header('Content-Transfer-Encoding: binary'); header ('Content-Length: ' . filesize($zipname)); readfile($zipname);//输出文件; //清理临时文件 foreach ($files as $row){ $file = 'tmp/'.$row; unlink($file); } rmdir('tmp'); unlink($zipname); ob_flush(); flush(); }else{ //清理临时文件 foreach ($files as $row){ $file = 'tmp/'.$row; unlink($file); } rmdir('tmp'); ob_flush(); flush(); app_die(); } }else{ //清理临时文件 foreach ($files as $row){ $file = 'tmp/'.$row; unlink($file); } rmdir('tmp'); ob_flush(); flush(); app_die(); } exit; }
ZipArchive实现中文压缩
最新推荐文章于 2024-03-18 14:43:27 发布