评论

收藏

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

开发技术 开发技术 发布于:2021-09-16 10:34 | 阅读数:179 | 评论:0

在本篇文章里我们给各位整理了关于php ZipArchive实现多文件打包下载实例以及相关代码,需要的朋友们可以学习下。
实例代码:
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);
 
  }
大家可以在本地测试下,感谢大家的学习和对CodeAE代码之家的支持。
原文链接:https://www.cnblogs.com/zhangdong156/p/11771174.html

关注下面的标签,发现更多相似文章