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语法(1)
Oct 09 PHP
php&java(二)
Oct 09 PHP
php array_walk() 数组函数
Jul 12 PHP
PHP闭包(Closure)使用详解
May 02 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
PHP中foreach()用法汇总
Jul 02 PHP
PHP面向对象详解(三)
Dec 07 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
python连接mysql有哪些方法
2020/06/24 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
全民健身日活动方案
2014/01/29 职场文书
新文化运动的基本口号
2014/06/21 职场文书
领导班子整改方案
2014/10/25 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
关于EntityWrapper的in用法
2022/03/22 Java/Android