3초기억력

ASP - ASP에서 바이너리 데이터를 읽고 표시하려면? 본문

플밍_ASP

ASP - ASP에서 바이너리 데이터를 읽고 표시하려면?

잠수콩 2011. 3. 25. 13:00


대부분의 ASP 개발자들은 FSO(File System Object)를 이용하여 파일 시스템 핸들링 하는 방법에 대해 어느 정도 알고 있다. 하지만 FSO를 이용하여서는 바이너리 데이터가 들어 있는 파일을 읽고 표시하기는 어렵다. ASP는 매크로가 들어 있는 엑셀 파일이나, PDF 파일, 이미지 파일 등 바이너리 데이터가 들어 있는 파일을 다루기 위한 방법을 지원하지 않고 있다. 하지만 비주얼 베이직을 이용하여 이 부분을 보완할 만한 컴포넌트를 직접 작성할 수 가 있다.

여기서 다룰 내용을 직접 해보고자 한다면 비주얼 베이직 5.0 이상이 필요하다.

이제부터 바이너리 데이터가 들어 있는 파일을 읽어들이는 MyObject라는 ActiveX DLL을 비주얼 베이직을 통해 직접 만들어 보도록 하자.

우선 비주얼 베이직 5.0 이상에서 ActiveX DLL 프로젝트를 하나 생성한다. 
그 프로젝트의 이름을 MyObject라고 변경한다. 
그 클래스 모듈의 이름을 BinRead로 변경한다. 
클래스 모듈의 General Declarations 부분에 다음과 같은 코드를 삽입한다:

 Function readBinFile(ByVal bfilename As String) As Variant
  Dim fl As Long
  Dim FileNum As Long
  Dim binbyte() As Byte
  Dim binfilestr As String

  On Error GoTo errHandler

  FileNum = FreeFile
  Open bfilename For Binary Access Read As #FileNum

  fl = FileLen(bfilename)
  ReDim binbyte(fl)

  Get #FileNum, , binbyte

  Close #FileNum

  readBinFile = binbyte
  Exit Function

  errHandler:
  Exit Function
 End Function

이 프로젝트를 저장한다. 
비주얼 베이직의 파일 메뉴에서 Make MyObject.dll을 선택하여 DLL 파일을 만든다. 
만일 지금 만든 DLL의 파일 위치와 웹서버의 위치가 서로 틀리다면 이 DLL 파일을 웹서버로 옮긴 후 Regsvr32를 이용하여 이 DLL 파일을 웹서버 시스템에 등록시킨다.

(예: regsvr32 c: empmyobject.dll) 
위와 같은 방법으로 바이너리 데이터가 들어 있는 파일을 읽어 들이는 ActiveX DLL 파일을 만들고 시스템에 정상적으로 등록시켰다면 다음과 같이 ASP 코드에서 원하는 바이너리 파일을 읽어들일 수 있다. 아래 예는 매크로가 들어 있는 엑셀 파일을 읽어 들이는 예이다:

 <% 
 Response.buffer = TRUE 
 Response.ContentType = "application/x-msexcel" 
 Dim vntStream 
 Set oMyObject = Server.CreateObject("MyObject.BinRead") 
 vntStream = oMyObject.readBinFile("c: emp emp.xls") 
 Response.BinaryWrite(vntStream) 
 Set oMyObject = Nothing 
 Response.End 
 %>

출처 : http://dojeun.egloos.com/318101

 

Comments