How To Read and Display Binary Data in ASP

This article was previously published under Q193998
This article shows how to read and display binary data using Active ServerPages.

Many developers appreciate the ease of using the Scripting.FileSystemObjectto open an ASCII file and then display its contents in Microsoft Word orMicrosoft Excel from within Internet Explorer. In its current inception,ASP does not directly provide any comparable objects to read files thatcontain binary data such as an Excel worksheet with macros, an AdobeAcrobat (.pdf) file, a .gif image, or any other files that contain binarydata. However, an ASP developer can write a custom business object orcomponent that adds this functionality.
Part I provides the ASP code that receives and then displays the binaryfile using an appropriate MIME type, and Part II shows how to create theVisual Basic 5.0 (or later) ActiveX DLL component that extends thecapability of ASP to read binary data.

Part I: ASP Sample That Opens an Excel Worksheet Containing Macros

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

NOTE: For Acrobat files, change the MIME type by using Response.ContentType= "application/pdf". For a .gif image, use Response.ContentType ="image/gif".

Part II: The Visual Basic 5.0 ActiveX DLL (MyObject.BinRead)

To create the component that performs the binary read, perform thefollowing steps:
  1. Create a new ActiveX DLL project in Visual Basic 5.0 or later.
  2. Rename the project MyObject.
  3. Rename the class module BinRead.
  4. Cut and paste the following code into the General Declarations section of the class module:
       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						
  5. Save the project.
  6. On the File menu click Make MyObject.dll.
If your Web server is on a separate machine from where you created thecomponent, you need to copy the component onto the Web server and registerit using RegSvr32.

To incorporate the file created in Part I into another ASP page that hastext or other formatting, use a server side include statement.

Article ID: 193998 - Last Review: 03/16/2005 20:29:29 - Revision: 2.5

Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Active Server Pages 4.0

  • kbcode kbfso kbhowto kbscript KB193998