이 글에서는 주로 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 == '.' || $file == '..'){ continue; } elseif (is_dir($dir.$file)){ $result = array_merge($result, list_dir($dir.$file.'/')); } else{ array_push($result, $dir.$file); } } } return $result; } //获取列表 $datalist=list_dir('../'); $filename = "./bak.zip"; //最终生成的文件名(含路径) if(!file_exists($filename)){ //重新生成文件 $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释 if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) { exit('无法打开文件,或者文件创建失败'); } 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('Content-disposition: attachment; filename='.basename($filename)); //文件名 header("Content-Type: application/zip"); //zip格式的 header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件 header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小 @readfile($filename); ?>
PHP ZipArchive는 ZIP 파일을 쉽게 압축하고 압축을 풀 수 있는 PHP와 함께 제공되는 확장 클래스입니다. 사용하기 전에 먼저 PHP ZIP 확장이 활성화되어 있는지 확인해야 합니다. 여기서는 다양한 플랫폼에서 PHP 확장을 활성화하는 방법을 온라인으로 설명하지 않습니다. 의사소통하다.
다음은 PHP zipArchive를 사용하여 참조용 파일을 압축 및 압축 해제하는 몇 가지 일반적인 예입니다.
1. zip 파일의 압축을 푼다
$zip=new ZipArchive;//新建一个ZipArchive的对象 if($zip->open('test.zip')===TRUE){ $zip->extractTo('images');//假设解压缩到在当前路径下images文件夹内 $zip->close();//关闭处理的zip文件 }
2. 파일을 zip 파일로 압축합니다
$zip=new ZipArchive; if($zip->open('test.zip',ZipArchive::OVERWRITE)===TRUE){ $zip->addFile('image.txt');//假设加入的文件名是image.txt,在当前路径下 $zip->close(); }
3.
$zip=new ZipArchive; $res=$zip->open('test.zip',ZipArchive::CREATE); if($res===TRUE){ $zip->addFromString('test.txt','file content goes here'); $zip->close(); echo 'ok'; }else{ echo 'failed'; }
4. 폴더를 zip 파일로 압축합니다
function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定。 while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..',不要对他们进行操作 if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归 addFileToZip($path."/".$filename, $zip); }else{ //将文件加入zip对象 $zip->addFile($path."/".$filename); } } } @closedir($path); } $zip=new ZipArchive(); if($zip->open('images.zip', ZipArchive::OVERWRITE)=== TRUE){ addFileToZip('images/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法 $zip->close(); //关闭处理的zip文件 }
관련 권장 사항:
위 내용은 PHP 파일을 zip 파일로 쉽게 패키징하고 다운로드하는 몇 줄의 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!