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 相关文章推荐
基于mysql的bbs设计(一)
Oct 09 PHP
简单的页面缓冲技术
Oct 09 PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
Phpbean路由转发的php代码
Jan 10 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
php短址转换实现方法
Feb 25 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
Laravel框架实现定时Task Scheduling例子
Oct 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强制下载类型的实现代码
2011/04/21 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
python中Genarator函数用法分析
2015/04/08 Python
初步理解Python进程的信号通讯
2015/04/09 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
服装厂厂长职责
2013/12/16 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
师范生自我鉴定
2014/03/20 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
学校交通安全责任书
2014/08/25 职场文书
初婚未育证明样本
2014/10/24 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python