当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-20 20:15:38 浏览: 评论:0 

在本篇文章里我们给各位整理了关于php ZipArchive实现多文件打包下载实例以及相关代码,需要的朋友们可以学习下。

实例代码:

  1. public function downLoad($dataUrl,$saveName
  2.   { 
  3.     $datalist = [ 
  4.       ROOT_PATH.'/public/introduce/110.docx'
  5.       ROOT_PATH.'/public/upfile/110.zip' 
  6.     ]; 
  7. //    print_r($datalist);die; 
  8.     $filename = ROOT_PATH.'\public\/'.$saveName.'.zip'
  9.     if(file_exists($filename)){ 
  10.       unlink($filename); 
  11.     } 
  12.  
  13.     $zip = new \ZipArchive(); 
  14.     if ($zip->open($filename,\ZipArchive::CREATE)!== true){ 
  15.       exit('无法打开文件,或者文件创建失败'); 
  16.     } 
  17.  
  18.     foreach ($dataUrl as $index => $item) { 
  19.       if (DIRECTORY_SEPARATOR=='\\'){ 
  20.         $item = str_replace('/',DIRECTORY_SEPARATOR,$item); 
  21.         $filename = str_replace('/',DIRECTORY_SEPARATOR,$filename); 
  22.       } 
  23. //      var_dump($item); 
  24. //      var_dump(file_exists($item));die; 
  25.       if (file_exists($item)){ 
  26.         $zip->addFile($item,basename($item)); 
  27.       } 
  28.     } 
  29.  
  30.     $zip->close(); 
  31.     if(!file_exists($filename)){ 
  32.       exit("无法找到文件"); //即使创建,仍有可能失败 
  33.     } 
  34.     header('Content-Type: application/zip'); 
  35.     header('Content-disposition: attachment; filename='.basename($filename)); 
  36.     header('Content-Length: ' . filesize($filename)); 
  37.     @readfile($filename); 
  38.      @unlink ( $filename ); 

注意:里面的路径全部用绝对路径,不然会找不到文件

附赠其他操作:

解压缩zip文件

  1. public function unzip_file($file$dir){  
  2.  
  3.     // 实例化对象  
  4.  
  5.     $zip = new ZipArchive() ;  
  6.  
  7.     //打开zip文档,如果打开失败返回提示信息  
  8.  
  9.     if ($zip->open($file) !== TRUE) {  
  10.  
  11.      die ("Could not open archive");  
  12.  
  13.     }  
  14.  
  15.     //将压缩文件解压到指定的目录下  
  16.  
  17.     $zip->extractTo($dir);  
  18.  
  19.     //关闭zip文档  
  20.  
  21.     $zip->close();  
  22.  
  23.   } 

获取解压文件目录

  1. public function loopFun($dir)  
  2.  
  3.   {  
  4.  
  5.     $handle = opendir($dir."."); 
  6.  
  7.     //定义用于存储文件名的数组 
  8.  
  9.     $array_file = array(); 
  10.  
  11.     while (false !== ($file = readdir($handle))) 
  12.  
  13.     { 
  14.  
  15.       if ($file != "." && $file != "..") { 
  16.  
  17.         $array_file[] = $dir.'/'.$file//输出文件名 
  18.  
  19.       } 
  20.  
  21.     } 
  22.  
  23.     closedir($handle); 
  24.  
  25.     return $array_file
  26.  
  27.     //print_r($array_file); 
  28.  
  29.   }

Tags: ZipArchive php文件打包下载

分享到:

相关文章