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

ob_end_clean();
//导出全文操作 生成文件名和文件地址的 键值数组
foreach(listdb askey=>value){ if(value['attachment_text']){
quanwen_ti=value['title_cn']?value['title_cn']:value['title_en'];
quanwen_list[quanwen_ti]=value['attachment_text']; } } //这里需要注意该目录是否存在,并且有创建的权限zipname = WWW."upload/down/".date("Ym")."/{timestamp}.zip"; //这是要打包的文件地址数组files = quanwen_list;zip = new ZipArchive();
res =zip->open(zipname, ZipArchive::CREATE);basepath=dirname(zipname); if (res === TRUE) {
foreach (files askeyti=>$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();
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容