-
[PHP] ZipArchive 를 사용하여 압축파일을 만들어보자PHP 2021. 9. 16. 15:42728x90
PHP에서 제공하는 ZipArchive를 사용하여 압축파일을 생성할 수 있다
ZipArchive를 사용하기 전에는 pclzip.lib 를 사용했었는데
pclzip.lib 로는 압축폴더 내에 폴더가 생성이 안 돼서 ZipArchive로 변경하였다
결과적으로 ZipArchive가 속도도 훨씬 빠르고 기능도 잘 정리되어 있어 사용하기 편리했다
코드로 어떻게 사용하는지 살펴보자
1. 압축파일이 저장될 최종 경로 선언하기
$targetZipFile="C:\\archive1.zip";
2. 압축파일 생성하기
$zip->open(압축파일 저장경로, ZipArchive::CREATE) 를 하게 되면 압축파일이 생성된다
생성이 되었다면 TRUE 를 반환하고
파일이나 폴더를 추가하면 된다
압축파일은 마지막에 $zip->close() 로 닫아줘야한다
$zip = new ZipArchive(); if($zip->open($targetZipFile, ZipArchive::CREATE) === TRUE){ // ... 파일, 폴더 추가하기 $zip->close(); } else { echo "Not create Zip"; }
3. 파일 추가하기
압축파일 내 파일을 추가해보자
$fileName 즉 저장할 파일은 경로를 압축파일을 root로 한다
그러므로 $fileName 에는 부모 폴더를 적지 않고 파일명만 작성한다
// 원본 파일 path $downPath = "C:\\original\\text.txt"; // 압축 파일 내에 저장할 파일 이름 $fileName = "newText.txt"; // 원본 파일, 저장할 파일 $zip->addFile($downPath, $fileName);
zip 파일이 생성된 모습 5. 압축파일 내에 폴더를 생성하기
압축폴더 내에 폴더를 생성할 수 있다
폴더를 생성하려면 폴더의 실제 Path와 폴더명이 필요하다
폴더를 생성하기 전 이미 폴더가 생성되었는지 확인부터 하는데
이때는 폴더의 실제 Path를 사용한다
폴더가 생성되어 있지 않다면 $zip->addEmptyDir(폴더명) 으로 폴더를 생성한다
생성한 폴더에 파일을 저장하려면 압축파일을 root로하여 상대경로를 적어줘야하는데
여기서는 생성한 폴더 안에 파일을 저장하기 때문에
폴더명."\\".파일명 을 사용해 주었다
// 폴더명 $folderName = "MyFolder"; // 폴더 Path $folderRealPath = "C:\archive1.zip\MyFolder"; // 원본 파일 path $downPath = "C:\\original\\text.txt"; // 압축 파일 내에 저장할 파일 이름 $fileName = "newText.txt"; // 원본 파일, 저장할 파일(폴더명\\파일명) $zip->addFile($downPath, $folderName."\\".$fileName);
MyFolder 밑에 newText.txt 파일이 추가된 archive1.zip 파일을 볼 수 있다
참고
https://www.php.net/manual/en/class.ziparchive.php
728x90728x90'PHP' 카테고리의 다른 글
[PHP] 한글 깨짐 / UTF-8 을 EUC-KR 로 변환하기 (0) 2022.11.08 이전 페이지 주소값 가져오는 법 (0) 2020.12.23 php.ini 파일 분석 (0) 2020.12.23 Eclipse PHP 한글 깨질 때 (0) 2020.12.18