美文网首页
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