메뉴 건너뛰기

Dev tips

ASP [ASP] asp상에서 서버에 zip 압축/압축해제(풀기) 예제

taknim 2008.06.20 19:14 조회 수 : 11637 추천:2783

http://www.myfav.co.kr/myfav/51?TSSESSION=4037b7a617fb792f14593c5356bd2d46

[데브피아 펌]

  • 1. 제가 첨부한 파일을다운 받으신후 zip32.dll과 unzip32.dll을 윈도우 system32 디렉토리 안에 넣습니다.

         windows 2000계열 -> c:\winnt\system32
         windows 9x, XP계열 -> c:\windows\system32

  • 2. 웹서버의 루트에서 폴더 하나 생성합니다. 저의 경우 "ziptest"로 폴더 생성했습니다.
    아마 c:\inetput\wwwroot\ziptest 이런식의 폴더구조가 될겁니다.

  • 3. 이 생성한 ziptest에 권한을 줘야합니다. 이것때문에 압축이안되거나 압축해제가 안되서 꽤나 오랫동안 삽질했습니다.
    windows 2000 계열이라면 단순히 ziptest 폴더 속성 권한에서 everyone 사용자 추가한후에 읽기/쓰기 권한주면 될텐데
    windows xp를 제가 이용한지 몇일 안된지라 windows 2000처럼 폴더권한 바꾸는 방법을 몰라서 헤맸습니다.
    xp에선 그냥 폴더 속성에 "공유"탭 누른후에 "네트워크에서 이 폴더 공유", "네트워크 사용자가 내 파일을 변경할 수 있음"
    이 2개 옵션에 체크하고선 확인만 누르면 되더군요 -_-

  • 4. 첨부파일중에 CGZipLibrary.dll 파일을 ziptest 폴더 안에 둡니다.
    뭐 이 dll파일은 아무대나 둬도 상관없지만 그냥 여기다 둡니다. -_-
    CGZipLibrary.dll 이 파일을 레지스트리에 등록해야합니다. 혹 깜빡하시는 분들을 위해서
    RegSvr32 c:\inetpub\wwwroot\ziptest\CGZipLibrary.dll 이렇게 해서 등록합니다.

  • 5. 아래 asp 소스코드를 이용해서 압축/ 압축풀기를 하면 끝! 입니다.
<%
  '=====================================================
  ' 압축
  '=====================================================
   Dim oZip
   Set oZip = CreateObject("CGZipLibrary.CGZipFiles")
   oZip.AddFile "C:\Inetpub\wwwroot\default.asp"
   oZip.AddFile "C:\Inetpub\wwwroot\test.txt" '
   oZip.AddFile "C:\Inetpub\wwwroot\*.*" ' 이렇게하면 wwwroot폴더안의 모든파일/폴더 압축
   oZip.ZipFileName = "C:\Inetpub\wwwroot\ziptest\test.zip"
   oZip.UpdatingZip = False

   If oZip.MakeZipFile <> 0 Then
      response.write oZip.GetLastMessage
   End If

   Set oZip = Nothing


  '=====================================================
  ' 압축 해제
  '=====================================================
  Dim oUnZip
  Set oUnZip = CreateObject("CGZipLibrary.CGUnzipFiles")
  oUnZip.ZipFileName = "C:\Inetpub\wwwroot\ziptest\test.zip"
  oUnZip.ExtractDir = "C:\Inetpub\wwwroot\ziptest\extractfolder"
 
  If oUnZip.Unzip <> 0 Then
     response.write oUnZip.GetLastMessage
  End If

  Set oUnZip = Nothing
%>

참고한 정보들 입니다.

코드구루 zip/unzip 관련 글

http://www.codeguru.com/vb/gen/vb_graphics/fileformats/article.php/c6743/

위의 url에서 압축관련 모듈을 다운받으면 VB에서 실행해볼 수 있습니다. 압축풀면 CGZipLibrary.dll 파일이 있을텐데 제가 올린 파일과 코드구루에 있는 CGZipLibrary.dll 파일이 아주 쪼금 틀립니다. 코드구루의 CGZipLibrary.dll 은 압축할때 디렉토리 경로까지 압축을 해버려서 제가 코드 수정해서 재컴파일한겁니다. 수정한 부분은 아래와 같습니다.

CGZipFiles.cls 파일에서 MakeZipFile 함수를 보면 iIgnorePath 부분 변수 사용한곳이있는데 그곳의 값을 '1' 로 바꾼후 재컴파일 한겁니다. 이게 0,1 두가지 옵션이 있는데 '0' 일경운 디렉토리 경로까지 압축하고 '1' 일경우엔 경로무시합니다.