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 相关文章推荐
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
php mail to 配置详解
Jan 16 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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
php5数字型字符串加解密代码
2008/04/24 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
python装饰器与递归算法详解
2016/02/18 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
《日月潭》教学反思
2014/02/28 职场文书
初三学习决心书
2014/03/11 职场文书
工程造价专业求职信
2014/07/17 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
教师自荐信范文
2015/03/06 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技