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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
CI框架整合smarty步骤详解
May 19 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
浅谈PHP中的Trait使用方法
Mar 22 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 多关键字 高亮显示实现代码
2012/04/23 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
php文件读取方法实例分析
2015/06/20 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
javascript计时器详解
2015/02/28 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
如何基于python生成list的所有的子集
2019/11/11 Python
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
公司庆典活动邀请函
2014/01/09 职场文书
物控部经理职务说明书
2014/02/25 职场文书
组工干部演讲稿
2014/09/02 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android