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 常见郁闷问题答解
Nov 25 PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 PHP
php解析xml方法实例详解
May 12 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
PHP7引入的"??"和"?:"的区别讲解
Apr 08 PHP
laravel Model 执行事务的实现
Oct 10 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的十大要点(上)
2009/02/04 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
销售主管的自我评价分享
2014/01/03 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
整改报告格式
2014/11/06 职场文书
2014年设计师工作总结
2014/11/25 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL