CGZipLibrary를 이용하여 ASP에서 파일 압축 및 압축 해제하기

ASP/TIP 2009. 1. 13. 16:22

가끔 ASP로 작업을 하다보면 파일을 압축하거나 압축해제를 해야하는 경우가 생깁니다. 그런데 ASP에서는 이런 기능을 제공하지 않기 때문에 서버용 콤포넌트를 개발해서 사용해야됩니다.

일반개발자들이 이런 서버용 콤포넌트를 개발하기란 쉽지 않습니다. 그래서 몇 군데 자료를 찾다가 괜찮은 압축처리 콤포넌트를 찾아 소개합니다.

첨부된 GZipLibrary.dll 파일을 다운로드 받아서 레지스트리에 등록해야합니다. 다운로드 받은 dll 파일의 경로는 아무곳이나 상관없지만 일반적으로 C:\Windows\System32 폴더나 C:\Windows\System 폴더에 복사를 한후 등록을 합니다.(일부 OS의 경우는 C:\Windows 폴더 대신 C:\WinNT 폴더)

레지스터리에 등록하는 방법은 다음과 같습니다.

시작 > 실행을 눌러서 열기항목에 regsvr32 [CGZipLibrary.dll 이 있는 폴더경로]\CGZipLibrary.dll 라고 입력하고 엔터를 누릅니다.

예를 들어서 C:\Windows\System32 폴더에 CGZipLibrary.dll 파일이 있다면

regsvr32 C:\Windows\System32\CGZipLibrary.dll

라고 입력해서 등록합니다.

ASP에서 압축 및 압축해제 처리하는 예제 소스는 아래와 같습니다.

[ASP 소스 예제]

<%
    '=====================================================
    ' 압축
    '=====================================================
    Dim oZip
    Set oZip = Server.CreateObject("CGZipLibrary.CGZipFiles")

    ' 압축할 파일을 추가합니다.
    oZip.AddFile "C:\Inetpub\wwwroot\default.asp"
    oZip.AddFile "C:\Inetpub\wwwroot\test.txt"
    ' 이렇게하면 폴더안의 모든파일/폴더 압축합니다.
    'oZip.AddFile "C:\Inetpub\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 = Server.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에서 실행해볼 수 있습니다. 압축풀면GZipLibrary.dll 파일이있는데 여기에 올린 파일은 코드구루에 있는 CGZipLibrary.dll 파일이 아주 조금 틀립니다. 코드구루의CGZipLibrary.dll 은 압축할때 디렉토리 경로까지 압축을 합니다.

원본 소스를 수정한 내용은 CGZipFiles.cls 파일에서 MakeZipFile 함수를 보면 iIgnorePath 부분 변수 사용한곳이있는데그곳의 값을 '1' 로 수정한후 재컴파일 하였습니다.
이 값은 0 과 1 두가지 옵션이 있는데 '0' 일 경우 디렉토리 경로까지 압축하고'1' 일경우엔 경로무시합니다.

: