📅  最后修改于: 2023-12-03 14:59:23.738000             🧑  作者: Mango
在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
对象来创建文件流并将数据写入到本地文件中。