php 实现将多个文件压缩成zip功能 并下载压缩文件(解决无法压缩成中文名问题)

ob_end_clean();
//导出全文操作 生成文件名和文件地址的 键值数组
foreach(key=>value['attachment_text']){
value['title_cn']?value['title_en'];
quanwen_ti]=zipname = WWW."upload/down/".date("Ym")."/{files = zip = new ZipArchive();
zip->open(basepath=dirname(res === TRUE) {
foreach (keyti=>$file) {

     //将url转换成本地物理地址 WWW为定义的物理地址常量

     $file=str_replace("http://www_xxx_com",WWW,$file);
     $file=str_replace("///","/",$file);
    
     //这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名
     $filename = substr($file, strrpos($file, '/') + 1);
     $houzhui=pathinfo($filename,PATHINFO_EXTENSION);
     $tem_keyti= iconv('UTF-8','GBK',"ceshi.".$houzhui);
     $keyti=iconv('UTF-8','GBK',$keyti.'.'.$houzhui);
     $zip->addFile($file, $tem_keyti);
     $zip->renameName($tem_keyti,$keyti);
 }
//打包第一步生成的导出文件合并打包
// $basename=basename($down_file);
// $zip->addFile($down_file,$basename);
}
//关闭文件
$zip->close();

//这里是下载zip文件
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: " . filesize($zipname));
header("Content-Disposition: attachment; filename=\"" . basename($zipname) . "\"");
readfile($zipname);
flush();
ob_flush();
exit();

你可能感兴趣的:(php 实现将多个文件压缩成zip功能 并下载压缩文件(解决无法压缩成中文名问题))