ZIP 액션
PHP Zip 초보자 자습서에 오신 것을 환영합니다. zip 파일 작업이 필요한 프로젝트가 있고 어디에서 시작할지 모릅니다. 걱정 마.
이 안내서에서는 zip 아카이브를 작성하고 파일, 폴더를 추가하고 압축을 풀고 zip 파일을 강제로 다운로드하는 방법에 대한 모든 기본 사항을 설명합니다.
ⓘ이 튜토리얼의 시작 부분에 모든 예제 코드가 포함 된 zip 파일이 포함되어 있으므로 모든 것을 복사하여 붙여 넣을 필요가 없습니다.
소스 코드 다운로드
먼저 약속 된 예제 소스 코드에 대한 다운로드 링크가 있습니다.
소스 코드 다운로드
소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스되었으므로 그 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용하십시오.
빠른 시작
요구 사항
PHP 5.3부터 zip 함수는 내장 기능이 되었습니다. 새로운 버전의 PHP를 추가로 설치하거나 설정할 필요가 없습니다.
그러나 여전히 최신 버전의 PHP를 사용하는 경우 zip 확장명을 업그레이드하거나 활성화하는 것이 좋습니다.
우편 번호 확장 문제가 있는 분들을 위해 이 섹션이 도움이 될 수 있습니다.
ZIP 확장 구현 – WINDOWS
extension=php_zip.dll
ZIP 확장 구현 – LINUX
Linux를 사용하는 사람들은 다음을 시도해보십시오.
sudo apt-get install php-zip
그런 다음 웹 서버를 다시 시작하십시오.
sudo service apache2 restart
설치 확인
PHP zip이 성공적으로 설치되었는지 확인하려면 한 줄의 코드로 PHP 파일만 작성하면 됩니다.
phpinfo();
그런 다음 웹 브라우저에서 이 페이지에 액세스하여 "zip"을 검색하십시오. – 올바르게 설치 한 경우 표시됩니다.
작성 및 추가
PHP에서 zip 파일을 시작하려면 어떻게 해야 합니까? 이 섹션에서는 zip 아카이브를 생성하고 파일 / 폴더를 추가하는 방법에 대한 몇 가지 예를 점진적으로 살펴 봅니다.
1) ZIP 파일 생성 / 열기
$zip = new ZipArchive(); if ($zip->open('test.zip', ZipArchive::CREATE)) { $zip->close(); echo "OK"; } else { echo "ERROR!"; }
그러나 물론이 스크립트는 아무것도 추가되지 않으므로 실제 zip 파일을 생성하지 않습니다.
2) STRING에서 ZIP 파일로
$zip = new ZipArchive(); if ($zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) { // FILE NAME, STRING TO ADD $zip->addFromString("test.txt", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
3) ZIP 아카이브에 파일 추가
$zip = new ZipArchive(); if ($zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) { // SOURCE FILE, FILE NAME IN ZIP $zip->addFile("chicken.jpg", "chicken-in-zip.jpg"); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
4) ZIP 보관소에 빈 폴더 추가
$zip = new ZipArchive(); if ($zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) { $zip->addEmptyDir("foobar"); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
5) ZIP에 파일을 추가하는 대량
$zip = new ZipArchive(); if ($zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) { // ADD ALL JPG, PNG, GIF FILES INTO THE ZIP ARCHIVE $zip->addGlob("*.{jpg,png,gif}", GLOB_BRACE); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
파일을 대량으로 추가하는 것은 "표준"글로브 검색 패턴이 필요하기 때문에 조금 더 혼란스러워합니다. 공식 PHP 참조 매뉴얼에서 패턴과 모드를 공식화하는 방법에 대해 자세히 읽을 수 있습니다.
6) 폴더 및 하위 폴더 추가
/* [INIT] */ $zipFile = "test.zip"; // TARGET ZIP FILE $dir = "foo"; // SOURCE FOLDER TO ZIP $zip = new ZipArchive(); /* [START ZIP] */ if ($zip->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE)) { // INIT + ERROR CHECKING if (!is_dir($dir)) { echo "$dir is not a folder!"; return false; } // CREATE THE BASE FOLDER FIRST $zip->addEmptyDir($dir); // DRILL DOWN INSIDE THE FOLDER $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::SELF_FIRST ); foreach ($files as $f) { // SKIP THE EMPTY . AND .. FOLDERS $basename = basename($f); if ($basename=="." || $basename=="..") { continue; } // ADD THE FILES AND SUB-FOLDERS TO ZIP ARCHIVE if (is_dir($f)) { echo "ADD FOLDER " . $f . "<br>"; $zip->addEmptyDir($f); } else { echo "ADD FILE " . $f . "<br>"; $zip->addFile($f, $f); } } // DONE! $zip->close(); echo "OK"; } else { echo "ERROR!"; }
전체 폴더와 파일 및 하위 폴더를 zip 파일에 추가하는 것은 실제로 그렇게 어렵지 않습니다. 폴더를 드릴 다운하기 위해 약간의 재귀 적 IteratorIterator 마술 만 있으면 됩니다.
7) 강제 다운로드 ZIP 파일
// TARGET ZIP FILE $zipfile = "test.zip"; // OUTPUT THE HEADERS header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=" . basename($zipfile)); header("Content-Length: " . filesize($zipfile)); // READ THE FILE flush(); readfile($zipfile); exit;
추출 및 제거
이제 파일 / 폴더를 만들어 zip 아카이브에 추가하는 방법을 알았습니다. 이제 반대 방향으로 제거하여 제거하십시오.
8) 파일 및 폴더 삭제
$zip = new ZipArchive(); if ($zip->open('test.zip')) { // DELETE A FILE INSIDE THE ZIP ARCHIVE $zip->deleteName('bird.jpg'); // DELETE A FOLDER INSIDE THE ZIP ARCHIVE $zip->deleteName('foo' . DIRECTORY_SEPARATOR); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
9) 이름 바꾸기
$zip = new ZipArchive(); if ($zip->open('test.zip')) { // OLD NAME, NEW NAME $zip->renameName('chicken.jpg', 'big-birb.jpg'); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
?>
10) 추출
$zip = new ZipArchive(); if ($zip->open('test.zip')) { $zip->extractTo('/target/folder/'); $zip->close(); echo "OK"; } else { echo "ERROR!"; }
요약
이것이 모든 예제 코드에 대한 것이며 모든 zip 함수의 요약입니다.
한눈에 보는 ZIP 함수
Function | Description |
open(FILE, MODE) | Opens a zip file.
|
close() | Properly closes a zip file. |
addFromString(FILE, STRING) | Create a file in the zip archive and string. |
addFile(SOURCE, FILE IN ZIP) | Add the specified file into the zip archive. |
addEmptyDir(NAME) | Add an empty folder in the zip archive. |
addGlob(PATTERN, MODE) | Add files and folders into the zip archive for the given pattern. |
deleteName(FILE) | Delete the given file/folder in the zip archive. |
renameName(OLD, NEW) | Rename the file/folder in the zip archive. |
extractTo(DESTINATION) | Extract the zip folder to the destination folder. |
ZIP 매뉴얼
공식 PHP ZipArchive 매뉴얼을 보려면 여기를 클릭하십시오.
등록된 댓글이 없습니다.