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图片上传代码
Nov 04 PHP
php解析json数据实例
Aug 19 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php生成验证码函数
Oct 20 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
PHP pear安装配置教程
May 14 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
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四种基础算法代码实例
2013/10/29 PHP
php简单smarty入门程序实例
2015/06/11 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
use jscript Create a SQL Server database
2007/06/16 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python实现类继承实例
2014/07/04 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
20招让你的Python飞起来!
2016/09/27 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
pytorch 常用线性函数详解
2020/01/15 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python 如何调用 dubbo 接口
2020/09/24 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
办公室文员工作职责
2014/01/31 职场文书
研讨会主持词
2014/04/02 职场文书
新年团拜会主持词
2014/04/02 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
励志演讲稿500字
2014/08/21 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
证婚人致辞精选
2015/07/28 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
SQL Server中的游标介绍
2022/05/20 SQL Server