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 chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
PHP form 表单传参明细研究
Jul 17 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
PHP文件上传类实例详解
Apr 08 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
laravel批量生成假数据的方法
Oct 09 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 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
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue interceptor 使用教程实例详解
2018/09/13 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
Python实现学校管理系统
2018/01/11 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
园林技术个人的自我评价
2014/02/15 职场文书
合作协议书范本
2014/04/17 职场文书
荆州古城导游词
2015/02/06 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
淮海战役观后感
2015/06/11 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
Java实现注册登录跳转
2022/06/16 Java/Android