티스토리 뷰

현재 운영중인 사이트는 코드이그나이터(CI) 프레임워크를 이용해 개발해놨음.

 

CI의 ZIP 라이브러리에 폴더 압축 기능이 있으나 이 기능을 사용해서 압축을 하면 압축은 잘 되나 다운받아서 반디집이용해서 풀면 한글 다 깨짐 케릭터셋 문제가 발생함.

 

PHP 기본 기능인 ZipArchive 를 활용하면 윈도우에서 파일명 정상으로 보이는걸 확인

 

아래 코드는 구글링 하면 많이 나오는 코드인데 폴더 압축 시 폴더 경로가 다 출력되는거때문에 수정함.

 

$zip = new ZipArchive;
$zip_name = 파일명;
$res = $zip->open('/압축파일저장폴더/'.$zip_name, ZipArchive::CREATE);
if ($res === TRUE) {
 $this->dirZip($zip,'/압축할폴더/');
 $zip->close();
} else {
 echo "에러 코드: ".$res;
}
 
function dirZip($resource,$dir) {    if(filetype($dir) === 'dir') {
      clearstatcache();
      if($fp = @opendir($dir)) {
        while(false !== ($ftmp = readdir($fp))){
          if(($ftmp !== ".") && ($ftmp !== "..") && ($ftmp !== ""))
          {
            if(filetype($dir.'/'.$ftmp) === 'dir') {
              clearstatcache();
              $resource->addEmptyDir($dir.'/'.$ftmp);
              set_time_limit(0);
              dirZip($resource,$dir.'/'.$ftmp);
            } else {
              $resource->addFile($dir.'/'.$ftmp, $ftmp);
            }
          }
        }
      }
      if(is_resource($fp)){
            closedir($fp);
      }
    } else {
      $resource->addFile($dir);
    }
  }
댓글