본문 바로가기

개발이야기/PHP

PHP로 압축파일(Zip)파일을 만들어 보자

728x90

PHP로 압축파일(Zip)파일을 만들어 보자


pclzip.lib.php



PHP 코드를 이용하여 원하는 파일이나 폴더(디렉터리)를 원하는 파일명으로 Zip파일 형식으로 압축해보겠습니다.


라이브러리 파일은 위에 첨부한 파일을 받거나 http://www.phpconcept.net 홈페이지에서 다운 받으면 됩니다.

phpconcept에서는 Zip파일 형식 이외에 Tar나 Xml 형식으로 변환해주는 라이브러리도 제공하고 있습니다.


먼저, 코드 소개에 앞서 코드안에 있는 변수명에 대한 설명을 간단하게 드리겠습니다.


filename : 원본 파일(또는 폴더)

stored_filename : 변경된 파일(또는 폴더)

size : 원본 크기

compressed_size : 압축된 크기

mtime : 수정시간

folder : 폴더이면 "1" 반환

status : 성공하면 "ok"반환



이제 사용 예제를 통해 보여드리겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
<?php 
 // pcl lib 경로 설정 
 include('pclzip.lib.php'); 
 
 // $create = new PclZip("생성할 압축파일 이름"); 
 // PclZip 객체에 test.zip 압축파일로 만듭니다. 
 $zipfile = new PclZip('test.zip'); 
 
 // $create->create("파일 or 디렉토리"); 
 // $data에 하나의 파일(또는 폴더)이거나 배열형 파일(또는 폴더)가 올 수 있습니다.  
 // test.php 파일과 www 폴더를 현제 경로에 test.zip 파일로 압축하겠습니다. 
 $data = array(); 
 $data = array("test.php""www"); 
 $create = $zipfile->create($data); 
 
 
 echo "<pre>"
 print_r($create); 
echo "</pre>"
?>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// $create = new PclZip("생성할 압축파일 이름"); 
// PclZip 객체에 test.zip 압축파일로 만듭니다. 
$zipfile = new PclZip('test.zip'); 
 
// $create->create("파일 or 디렉토리", ); 
// $data에 하나의 파일(또는 폴더)이거나 배열형 파일(또는 폴더)가 올 수 있습니다.  
// www 폴더를 현제 경로에 test.zip 파일로 압축하겠습니다. 
// 그리고 $data 뒤에 test 입력하고, 압축하면 stored_filename 변수에 
// 이동경로를 확인할 수 있습니다, 
$data = "www"
$create = $zipfile->create($data"test"); 
 
 
echo "<pre>\n"
print_r($create); 
echo "</pre>\n"
?>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// PclZip 객체를 생성합니다. 
// 추가할 압축파일를 선택합니다. 
// test.zip 에 파일을 추가하겠습니다.
$zipfile = new PclZip('test.zip');  
 
// $data에 추가할 파일을 배열로 지정합니다. 
// $data에 하나의 파일(또는 폴더)이거나 배열형 파일(또는 폴더)가 올 수 있습니다.  
$data = array("index.gif","test.gif"); 
$add = $zipfile->add($data); 
 
 
echo "<pre>"
print_r($add); 
echo "</pre>";
?>
cs


여기까지는 압축하는 방법에 대한 코드입니다.

다음은, 압축파일의 내용을 조회하는 코드를 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// PclZip 객체를 생성합니다. 
// 목록을 가져올 파일을 선택합니다. 
$zipfile = new PclZip('test.zip');  
 
// 엔트리 얻기 
$list = $zipfile->listContent(); 
 
echo "<pre>"
print_r($list); 
echo "</pre>"
?>
cs


다음은 압축파일 해제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// PclZip 객체를 생성합니다. 
//$객체 = new PclZip("해제할 압축파일 이름"); 
$zipfile = new PclZip('test.zip');  
 
// 참고로 $extract 변수를 정의하지 않아도 압축해제는 가능합니다.
$extract = $zipfile->extract();  
 
echo "<pre>"
print_r($extract); 
echo "</pre>"
?>
cs



다음은 특정 폴더 내에 있는 압축파일 해제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// PclZip 객체를 생성합니다. 
//$객체 = new PclZip("해제할 압축파일 이름"); 
$zipfile = new PclZip('test.zip');  
 
// 압축파일을 habony 폴더에 압축해제합니다. 
$extract = $zipfile->extract(PCLZIP_OPT_PATH, './habony/');  
 
 
echo "<pre>"
print_r($extract); 
echo "</pre>"
?>
cs


마지막으로 압축파일 내에 있는 특정파일을 삭제 하는 코드 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
// pcl lib 경로 설정 
include('pclzip.lib.php'); 
 
// PclZip 객체를 생성합니다. 
// 압축파일을 선택합니다. 
$zipfile = new PclZip('test.zip');  
 
// test.gif 를 삭제하겠습니다. 
// 하나의 파일(또는 폴더)이거나 배열형 파일(또는 폴더)가 올 수 있습니다.  
$delete = $zipfile->delete(PCLZIP_OPT_BY_NAME,"test.gif"); 
 
echo "<pre>"
print_r($delete); 
echo "</pre>"
?>
cs


이정도면 PHP 로 Zip 형식 압축파일을 마음데로 가지고 놀 수 있겠죠? ㅎ 사용중에 궁금하신 사항은 댓글로 문의 주시면 답변 드리겠습니다.