php ZipArchive实现多文件打包下载实例


Posted in PHP onOctober 31, 2019

实例代码:

public function downLoad($dataUrl,$saveName)
  {
    $datalist = [
      ROOT_PATH.'/public/introduce/110.docx',
      ROOT_PATH.'/public/upfile/110.zip'
    ];
//    print_r($datalist);die;
    $filename = ROOT_PATH.'\public\/'.$saveName.'.zip';
    if(file_exists($filename)){
      unlink($filename);
    }

    $zip = new \ZipArchive();
    if ($zip->open($filename,\ZipArchive::CREATE)!== true){
      exit('无法打开文件,或者文件创建失败');
    }

    foreach ($dataUrl as $index => $item) {
      if (DIRECTORY_SEPARATOR=='\\'){
        $item = str_replace('/',DIRECTORY_SEPARATOR,$item);
        $filename = str_replace('/',DIRECTORY_SEPARATOR,$filename);
      }
//      var_dump($item);
//      var_dump(file_exists($item));die;
      if (file_exists($item)){
        $zip->addFile($item,basename($item));
      }
    }

    $zip->close();
    if(!file_exists($filename)){
      exit("无法找到文件"); //即使创建,仍有可能失败
    }
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename='.basename($filename));
    header('Content-Length: ' . filesize($filename));
    @readfile($filename);
 @unlink ( $filename );
}

注意:里面的路径全部用绝对路径,不然会找不到文件

附赠其他操作:

解压缩zip文件

public function unzip_file($file, $dir){ 

    // 实例化对象 

    $zip = new ZipArchive() ; 

    //打开zip文档,如果打开失败返回提示信息 

    if ($zip->open($file) !== TRUE) { 

     die ("Could not open archive"); 

    } 

    //将压缩文件解压到指定的目录下 

    $zip->extractTo($dir); 

    //关闭zip文档 

    $zip->close(); 

  }

获取解压文件目录

public function loopFun($dir) 

  { 

    $handle = opendir($dir.".");

    //定义用于存储文件名的数组

    $array_file = array();

    while (false !== ($file = readdir($handle)))

    {

      if ($file != "." && $file != "..") {

        $array_file[] = $dir.'/'.$file; //输出文件名

      }

    }

    closedir($handle);

    return $array_file;

    //print_r($array_file);

  }

大家可以在本地测试下,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
PHP新手上路(九)
Oct 09 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
php计算当前程序执行时间示例
Apr 24 PHP
php限制ip地址范围的方法
Mar 31 PHP
php面向对象编程self和static的区别
May 08 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
Yii2选项卡的简单使用
May 26 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
php报错502badgateway解决方法
Oct 11 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
Laravel框架实现抢红包功能示例
Oct 31 #PHP
laravel框架实现后台登录、退出功能示例
Oct 31 #PHP
TP5框架简单登录功能实现方法示例
Oct 31 #PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 #PHP
laravel 框架实现无限级分类的方法示例
Oct 31 #PHP
tp5框架的增删改查操作示例
Oct 31 #PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 #PHP
You might like
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
jquery 问答知识整理
2010/02/11 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
python 统计列表中不同元素的数量方法
2018/06/29 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
python scipy卷积运算的实现方法
2019/09/16 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
python实现感知机模型的示例
2020/09/30 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
公司门卫管理制度
2014/02/01 职场文书
租车协议书范本
2014/04/22 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
门卫管理制度范本
2015/08/05 职场文书