▶ 뭉충닷컴
 
mungchung.com login
Site Search
My Space
주절주절...
공부방
쥔장소개
Board
자유게시판
유용한 정보
자료실
Programming
강좌 & Articles
Spring 3.0
프로그래밍 Tip
   -ASP
   -PHP
   -JavaScript
   -HTML
   -Java/JSP
   -Database
   -Crystal Report
   -Visual Basic
   -이클립스
   -리눅스
   -기타
Windows API (VB)
Spread Sheet 7.0
컴퓨터활용 Tip
Other things
StarCraft 전략
StarCraft 문서
김용(金庸)
Son Q & Dieda

백수다보니 할짓이 없어서 쓸데없는 글 하나 남깁니다.
데브피아 질문&답변 게시판 보면 가끔, 아주 가끔씩 올라오는 질문중 하나가
asp로 서버에 압축을 하거나, 압축풀기를 어떻게 하냐는겁니다.

몇년동안 개발하면서 그러한 작업은 필요한적이 없어서 별로 생각해본 기회가없었는데
오늘 문득 그런 질문글을보니 간편하게 컴퍼넌트로 만들면 어떨까 하는 생각이 들어서
대강 대강 어디서 소스구해서 테스트해보고 나름대로 이 정도면 간단한 예제용으로 괜찮다싶어서 글 올립니다.

원랜 가장 간단한 예제형식으로 압축/압축해제만 가능한 컴퍼넌트를 직접 만들어볼까했는데 내공이 존내 부족하다보니 지레겁부터먹고 그냥 코드구루에 아주 잘 만들어진 컴퍼넌트만 이용했습니다.-_-

돌아다니다보니 이것 저것 압축관련 모듈, 예제들이 많이 있었는데 그 중에서 코드구루에 있던 예제가 괜찮아서
그 예제 이용합니다. 원랜 거기에 VB용으로 예제 있던것 그냥 asp로 제가 바꾼것 뿐입니다.
뭐...이렇게 말하니 몇분간 VB -> asp용으로 포팅하고선 뚝딱 끝낸듯 싶지만 제가 머리가 안좋아서 오랫동안 삽질했습니다.

제가한 삽질을 다른분들은 하기싫다면 아래 예제 잘 보시면 될겁니다(아마도;;)

  • 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' 일경우엔 경로무시합니다.


댓글 '8'

HappyMong

2005.08.18 18:21:51
*.107.27.119

음....필요한거였어서 눈에 들어왔는댕 호스팅을 받는 저는 사용을 못하겠군요 ㅜㅜ

뭉충닷컴

2005.08.21 15:21:13
*.140.64.24

호스팅받으면..아무래도 서버모듈을 맘대로 이용하기 힘들지요;;

뭉충닷컴

2006.10.15 19:44:55
*.140.124.60

임현수님이 알려주셨는데.
oZip.AddFile "C:\Inetpub\wwwroot\*.*" 이렇게 할 경우
하위 파일들은 압축되지만 하위폴더들은 압축안됩니다!!

김수민

2007.02.06 17:01:30
*.207.73.57

Set oUnZip = CreateObject("CGZipLibrary.CGUnzipFiles")
이렇게 실행하면 위와같이 에러가 발생합니다.
Microsoft VBScript 런타임 오류 error '800a01ad'
ActiveX 구성 요소는 개체를 작성할 수 없습니다.: 'CGZipLibrary.CGUnzipFiles'


Set oUnZip = CreateObject("CGZipLibrary.CGUnzipFiles")
이렇게 실행하면
서버 개체 error 'ASP 0177 : 800401f3'
Server.CreateObject 실패
잘못된 프로그램 ID입니다. 이 메시지에 대한 추가 정보를 보려면..
이렇게 에러가 뜹니다. 뭐가 잘못된것인지요? 설명서대로 다해봤는데 같네요

뭉충닷컴

2007.02.06 19:27:10
*.47.198.57

위 프로그램은 VB로 만들어 진거라서 VB virtual machine가 필요합니다.
즉 컴퓨터에 VB를 실행시키기 위한 몇가지 DLL 들이 필요한데
이 DLL들은 비쥬얼 스튜디오를 설치하거나..아니면 VB로 만들어진 프로그램을 한번이라도 설치한 적이 있으면
컴퓨터에 등록되게 됩니다.
ActiveX 안되는 이유는 여러가지 있겠지만...일단 위의 DLL부터 있나 확인해보세요.
vb6kor.dll 을 system32 폴더에서 찾아보면 될겁니다.

파일이 있는데도 위와같은 오류가 뜬다면..흠.. -_-;;

강인철

2007.02.13 18:13:47
*.207.75.66

안녕하세요. 압축관련 컴포넌트를 찾다 알게되어 사용할려고 하는데 문의 드릴게 있습니다.
저도 위에분과 동일한 에러가 나네요 ㅠ.ㅠ 해결을 하셨나 모르겠네요
한가지 궁금한게 있습니다.
asp에서 dll호출하여 압축을 풀경우 동일한 파일이 존재할경우 어떻게 되는지 궁금합니다.
해지한 파일들이 중복이 될 수 있는데 이파일을 다 삭제할 수 는 없어 덮어쓰기 가 가능하게 할려고 하는데..
그럼 수고하세요.. 잘 사용하겠습니다.

뭉충닷컴

2007.02.16 06:53:26
*.47.198.57

오래전에 한거라..기억이 가물가물한데
같은 파일이 있을경우 덮어 씌운것으로 기억을 합니다...
제가 지금 테스트 할수 있는 환경이 아니라서 자세한 확답은 못드리겠네요

최현제

2007.11.29 15:40:40
*.35.76.85

폴더까지 압축하려면 어떻게 해야하죠??
문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
27 keyfile을 이용한 ssh 접속 방법 뭉충닷컴 2010-10-28 13684
26 멀티 브라우저 지원하는 frame, iframe 접근 코딩 방법 [3] 뭉충닷컴 2010-07-21 26318
25 crontab을 이용한 Tomcat 서버 자동 재시작 shell 뭉충닷컴 2009-08-28 25018
24 자바스크립트로 각 form의 element(요소)에 접근 방법 file [2] 뭉충닷컴 2008-09-11 55964
23 ERwin 에서 Logical의 컬럼명을 코멘트(Comment)로 변경하기 file [2] 뭉충닷컴 2008-01-16 31740
22 Tabular Data Control 마지막 강좌! 뭉충닷컴 2007-06-14 15702
21 ASP로 웹 어플리케이션 주소 사용하기 file 뭉충닷컴 2006-12-10 17907
20 VB로 WebBrowser 컨트롤의 HTML 제어 file 뭉충닷컴 2006-12-01 21389
19 ASP 페이징 쉽게 처리하기 file [4] 뭉충닷컴 2006-08-29 24244
18 두개의 비슷한 DB를 비교해서 변경된 부분 찾아내기 file 뭉충닷컴 2006-05-03 15000
17 ASP에서 Class 를 이용해보자 file 뭉충닷컴 2006-02-26 24770
16 Hotmail의 DHTML EDITOR 편집기를 이용해보자. file [34] 뭉충닷컴 2006-02-04 30232
15 Tabular Data Control 응용 - 제목 Sort (정렬) 쉽게 하기 [3] 뭉충닷컴 2006-01-27 14141
14 스크립트(Script) 코드를 암호화 시켜보자(Encode/Decode) [2] 뭉충닷컴 2005-06-10 19107
13 dll을 이용한 로그인 file [1] 뭉충닷컴 2005-11-25 22021
12 Tabular Data Control 응용 - 페이징 처리하는 3가지 방법 file [1] 뭉충닷컴 2005-11-23 16271
11 Query를 잼있고, 유용하게 사용해보자 file [3] 뭉충닷컴 2005-10-01 14724
10 Tabular Data Control 응용 - 테이블의 행 배경색이 격으로 변하게하기 뭉충닷컴 2005-09-25 15796
9 폼(Form) 검증해주는 스크립트(Script) file [15] 뭉충닷컴 2005-06-07 19262
» asp 로 서버에 zip 압축/압축해제(풀기) 예제 file [8] 뭉충닷컴 2005-08-12 19746
7 MS-SQL의 osql.exe 이용 하기 (도스상에서 sql 구문 이용) 뭉충닷컴 2005-09-25 19302
6 SQL Script 로 ERD와 테이블 생성 손쉽게하기 뭉충닷컴 2005-09-25 21602
5 Tabular Data Control 기초 다지기 4 - 마지막! file 뭉충닷컴 2005-09-25 14683
4 Tabular Data Control 기초 다지기 3 file 뭉충닷컴 2005-09-25 14477
3 Tabular Data Control 기초 다지기 2 file 뭉충닷컴 2005-09-25 14182
2 Tabular Data Control 기초 다지기 1 file [1] 뭉충닷컴 2005-09-25 15222
1 OWC를 이용한 웹에서 엑셀 그래프 그리기 file [4] 뭉충닷컴 2007-12-19 18974