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中for循环语句的几种变型
Mar 16 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP多维数组排序array详解
Nov 21 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
php利用ZipArchive类操作文件的实例
Jan 21 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二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
JQuery验证工具类搜集整理
2013/01/16 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
Python操作MySQL简单实现方法
2015/01/26 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python编写一个优美的下载器
2018/04/15 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
金融保险专业求职信
2014/09/03 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
2014年残联工作总结
2014/11/21 职场文书
小学生作文批改评语
2014/12/25 职场文书
刑事上诉状范文
2015/05/22 职场文书
薪资证明范本
2015/06/19 职场文书