>백엔드 개발 >PHP 튜토리얼 >PHP 파일을 zip 파일로 쉽게 패키징하고 다운로드하는 몇 줄의 코드

PHP 파일을 zip 파일로 쉽게 패키징하고 다운로드하는 몇 줄의 코드

不言
不言원래의
2018-04-26 15:12:442888검색

이 글에서는 주로 PHP 자체의 zlib 기능을 사용하여 PHP 파일을 zip으로 쉽게 패키징하고 다운로드하는 방법을 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

이 글의 예제는 PHP 파일을 모든 사람과 공유합니다. zip을 패키징하고 다운로드하기 위한 구체적인 코드는 참고용입니다. 구체적인 내용은 다음과 같습니다


<?php
//获取文件列表
function list_dir($dir){
   $result = array();
   if (is_dir($dir)){
   $file_dir = scandir($dir);
   foreach($file_dir as $file){
    if ($file == &#39;.&#39; || $file == &#39;..&#39;){
    continue;
    }
    elseif (is_dir($dir.$file)){
    $result = array_merge($result, list_dir($dir.$file.&#39;/&#39;));
    }
    else{
    array_push($result, $dir.$file);
    }
   }
   }
   return $result;
  }

//获取列表 
$datalist=list_dir(&#39;../&#39;);
$filename = "./bak.zip"; //最终生成的文件名(含路径)  
if(!file_exists($filename)){  
//重新生成文件  
  $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释  
  if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {  
    exit(&#39;无法打开文件,或者文件创建失败&#39;);
  }  
  foreach( $datalist as $val){  
    if(file_exists($val)){  
      $zip->addFile( $val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下  
    }  
  }  
  $zip->close();//关闭  
}  
if(!file_exists($filename)){  
  exit("无法找到文件"); //即使创建,仍有可能失败。。。。  
}  
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header(&#39;Content-disposition: attachment; filename=&#39;.basename($filename)); //文件名  
header("Content-Type: application/zip"); //zip格式的  
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件  
header(&#39;Content-Length: &#39;. filesize($filename)); //告诉浏览器,文件大小  
@readfile($filename);
?>

PHP ZipArchive는 ZIP 파일을 쉽게 압축하고 압축을 풀 수 있는 PHP와 함께 제공되는 확장 클래스입니다. 사용하기 전에 먼저 PHP ZIP 확장이 활성화되어 있는지 확인해야 합니다. 여기서는 다양한 플랫폼에서 PHP 확장을 활성화하는 방법을 온라인으로 설명하지 않습니다. 의사소통하다.

다음은 PHP zipArchive를 사용하여 참조용 파일을 압축 및 압축 해제하는 몇 가지 일반적인 예입니다.

1. zip 파일의 압축을 푼다

$zip=new ZipArchive;//新建一个ZipArchive的对象
 if($zip->open(&#39;test.zip&#39;)===TRUE){
 $zip->extractTo(&#39;images&#39;);//假设解压缩到在当前路径下images文件夹内
 $zip->close();//关闭处理的zip文件
}

2. 파일을 zip 파일로 압축합니다

$zip=new ZipArchive;
if($zip->open(&#39;test.zip&#39;,ZipArchive::OVERWRITE)===TRUE){
 $zip->addFile(&#39;image.txt&#39;);//假设加入的文件名是image.txt,在当前路径下
 $zip->close();
}

3.

$zip=new ZipArchive;
$res=$zip->open(&#39;test.zip&#39;,ZipArchive::CREATE);
if($res===TRUE){
 $zip->addFromString(&#39;test.txt&#39;,&#39;file content goes here&#39;);
 $zip->close();
 echo &#39;ok&#39;;
}else{
 echo &#39;failed&#39;;
}

4. 폴더를 zip 파일로 압축합니다

function addFileToZip($path,$zip){
 $handler=opendir($path); //打开当前文件夹由$path指定。
 while(($filename=readdir($handler))!==false){
 if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..&#39;,不要对他们进行操作
  if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
  addFileToZip($path."/".$filename, $zip);
  }else{ //将文件加入zip对象
  $zip->addFile($path."/".$filename);
  }
 }
 }
 @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;images.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
 addFileToZip(&#39;images/&#39;, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
 $zip->close(); //关闭处理的zip文件
}

관련 권장 사항:


다운로드한 파일 패키징을 위한 PHP 코드 예제

위 내용은 PHP 파일을 zip 파일로 쉽게 패키징하고 다운로드하는 몇 줄의 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.