php ZipArchive实现多文件打包下载实例
吾爱主题
阅读:142
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.作者投稿可能会经我们编辑修改或补充。