• Linux
  • apache
  • centos
  • Git版本管理
  • Linux基本命令
  • linux配置与优化
  • Nginx
  • PHP
  • Redis
  • Supervisor
  • Swoole
  • windows
  • THINKPHP
  • 开发者手册
  • Chat GPT / Open Ai
  • PHP/ThinkPHP实现批量打包下载文件的方法示例

    全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2023年08月12日 9:19:09
  • 所属分类:PHP+MySql, PHP原生源码
  • 阅读次数:170次阅读
  • 标签:
  • 需求描述:

    有数个文件,包含图片,文档。需要根据条件自动打包成压缩包,提供下载。

    解决(ZipArchive 类):

    PHP提供了ZipArchive 类可为我们实现这一功能,demo:

    <?php
     
    $files = array('image.jpeg','text.txt','music.wav');
    $zipname = 'enter_any_name_for_the_zipped_file.zip';
    $zip = new ZipArchive;
    $zip->open($zipname, ZipArchive::CREATE);
    foreach ($files as $file) {
     $zip->addFile($file);
    }
    $zip->close();
     
    ///Then download the zipped file.
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename='.$zipname);
    header('Content-Length: ' . filesize($zipname));
    readfile($zipname);
     
    ?>

    ThinkPHP版

    $zip = new \ZipArchive;
    //压缩文件名
    $filename = 'download.zip';
    //新建zip压缩包
    $zip->open($filename,\ZipArchive::OVERWRITE);
    //把图片一张一张加进去压缩
    foreach ($images as $key => $value) {
     $zip->addFile($value);
    }
    //打包zip
    $zip->close();
     
    //可以直接重定向下载
    header('Location:'.$filename);
     
    //或者输出下载
    header("Cache-Control: public"); 
    header("Content-Description: File Transfer"); 
    header('Content-disposition: attachment; filename='.basename($filename)); //文件名 
    header("Content-Type: application/force-download");
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小 
    readfile($filename);

    顶一下
    (0)
    100%
    订阅 回复
    踩一下
    (0)
    100%
    » 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 【上一篇】
  • 【下一篇】
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言

    您必须 [ 登录 ] 才能发表留言!