php ZipArchive实现多文件打包下载实例

吾爱主题 阅读:137 2021-09-15 16:41:00 评论:0

实例代码:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 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文件

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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();      }

获取解压文件目录

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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);      }

大家可以在本地测试下,感谢大家的学习和对服务器之家的支持。

原文链接:https://www.cnblogs.com/zhangdong156/p/11771174.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容