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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
关于svn冲突的解决方法
Jun 21 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 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
中国收音机工业发展史
2021/03/02 无线电
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
python实现代理服务功能实例
2013/11/15 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
基于python历史天气采集的分析
2019/02/14 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
通信研究生自荐信
2014/02/01 职场文书
工作睡觉检讨书
2014/02/25 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python