美文网首页
php 实现将多个文件压缩成zip功能 并下载压缩文件(解决无法

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

作者: 怪力程序员 | 来源:发表于2020-04-11 14:32 被阅读0次

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();

相关文章

网友评论

      本文标题:php 实现将多个文件压缩成zip功能 并下载压缩文件(解决无法

      本文链接:https://www.haomeiwen.com/subject/yjvymhtx.html