ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PHP] ZipArchive 를 사용하여 압축파일을 만들어보자
    PHP 2021. 9. 16. 15:42
    728x90
    728x90

    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

     

     

    728x90
    728x90

    '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
Designed by Tistory.