📜  ASP BinaryRead 方法(1)

📅  最后修改于: 2023-12-03 14:59:23.738000             🧑  作者: Mango

ASP BinaryRead 方法

在ASP中,BinaryRead方法常用于处理客户端通过POST方法提交的文件数据。它可以读取上传文件的二进制数据,并将其保存到服务器中。

语法
BinaryRead(count)
参数

count:可选参数,指定二进制数据的长度。如果未指定,则返回所有数据。

返回值

返回一个 Variant 类型的子数组,包含二进制数据的指定数量或全部数据。

例子

下面是一个简单的例子,演示如何使用 BinaryRead 方法读取并保存上传的文件数据。

<%@ Language=VBScript %>
<%
' 设置上传文件保存路径
SavePath = "C:\Uploads\"

' 读取上传文件数据
Set BinaryStream = Request.BinaryRead(Request.TotalBytes)

' 循环读取上传的所有文件并保存
Do While LenB(BinaryStream) > 0
    ' 获取文件名
    Pos = InStrB(BinaryStream, ChrB(13) & ChrB(10) & "--")
    FileNamePos = InStrB(Pos + 4, BinaryStream, ChrB(34))
    FileNameEndPos = InStrB(FileNamePos + 1, BinaryStream, ChrB(34))
    FileName = MidB(BinaryStream, FileNamePos + 1, FileNameEndPos - FileNamePos - 1)
    
    ' 获取文件数据
    Pos = InStrB(Pos + 4, BinaryStream, ChrB(13) & ChrB(10) & ChrB(13) & ChrB(10))
    DataPos = Pos + 4
    DataEndPos = InStrB(DataPos, BinaryStream, ChrB(13) & ChrB(10) & "--")
    FileData = MidB(BinaryStream, DataPos, DataEndPos - DataPos - 2)
    
    ' 保存文件
    If LenB(FileData) > 0 Then
        Set Stream = Server.CreateObject("ADODB.Stream")
        Stream.Type = 1 ' binary
        Stream.Open
        Stream.Write FileData
        Stream.SaveToFile SavePath & FileName, 2 ' overwrite
        Stream.Close
        Set Stream = Nothing
    End If
    
    ' 跳过下一个分隔符
    Pos = InStrB(Pos + 4, BinaryStream, ChrB(13) & ChrB(10) & "--")
    BinaryStream = MidB(BinaryStream, Pos)
Loop

Response.Write("上传完成!")
%>

这个例子展示了如何将上传的文件保存到指定的服务器路径中。通过循环读取二进制数据,可以获取上传文件的文件名和文件内容,然后保存到本地文件中。

注意事项
  • 在使用 BinaryRead 方法读取二进制数据时,需要使用 Request.TotalBytes 属性获取上传数据的总长度。
  • 如果上传的数据中包含多个文件,通常会以分隔符的形式分隔各个文件的数据。在读取数据时,需要根据分隔符的位置来分割二进制数据。
  • 在保存文件时,通常会使用 ADODB.Stream 对象来创建文件流并将数据写入到本地文件中。