在 ASP 中读取和显示二进制数据

来源:互联网 发布:分水岭分割算法 博客 编辑:程序博客网 时间:2024/04/30 01:52
概要
本文介绍了如何使用 Active Server Pages(动态服务器页)读取和显示二进制数据。

许多开发人员都很欣赏从 Internet Explorer 中用 Scripting.FileSystemObject 打开 ASCII 文件然后在 Microsoft Word 或 Microsoft Excel 中显示其内容这一方式带来的方便性。但是在目前,ASP 未直接提供任何类似的对象用以读取包含二进制数据的文件,如带有宏的 Excel 工作表、Adobe Acrobat (.pdf) 文件、.gif 图像或任何包含二进制数据的其他文件。不过,ASP 开发人员可以编写一个添加此功能的自定义业务对象或组件。
更多信息
“部分 I”提供了接收并接着使用合适的 MIME 类型显示二进制文件的 ASP 代码,“部分 II”显示了如何创建 Visual Basic 5.0(或更新版本)ActiveX DLL 组件,以扩展 ASP 读取二进制数据的能力。
部分 I:打开包含有宏的 Excel 工作表的 ASP 示例
   <%
   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
   %>
                

注意:对于 Acrobat 文件,使用 Response.ContentType = "application/pdf" 更改 MIME 类型。对于 .gif 图像,使用 Response.ContentType = "image/gif"。
部分 II:Visual Basic 5.0 ActiveX DLL (MyObject.BinRead)
要创建执行二进制读功能的组件,请执行下列步骤:

在 Visual Basic 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”。
如果 Web 服务器在与您创建此组件时所在的计算机不同的另一计算机上,则您需要将此组件复制到 Web 服务器并使用 RegSvr32 注册它。

要将“部分 I”中创建的文件合并到具有文本或其他格式的另一个 ASP 页上,请使用服务器端包含语句。
这篇文章中的信息适用于:
Microsoft Visual Basic Professional Edition for Windows 5.0
Microsoft Visual Basic Professional Edition for Windows 6.0
Microsoft Visual Basic Enterprise Edition for Windows 5.0
Microsoft Visual Basic Enterprise Edition for Windows 6.0
Microsoft Active Server Pages
原创粉丝点击