最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
纯asp分离FORM数据中的二进制文件和文本数据
时间:2022-06-30 10:17:47 编辑:袖梨 来源:一聚教程网
以下源代码为一个文件
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'作者:playxp,Email:[email protected]有问题请与我联系
'功能:纯asp分离FORM数据中的二进制文件和文本数据(支持中文)。
'使用方法:将此文件包含在处理form的asp文件中,使用GetValue(name)来读取表单中各个元素的值。
'注意:一定不要使用request.form来读取数据。
'在绝大数的支持asp的主页空间仅能使用有限的组件,不能使用上传组件,而内置的Request对象又不
'支持读取二进制文件,因此使用该文件可以解决上传文件困难的弊病,但在性能上却大打折扣。本程序参考了网上的一些代码。
'由GBK向UNICODE转换
Function GBToU(BinStr,byteNum)
GBToU=""
For j=1 To byteNum
gbcode1=AscB(MidB(BinStr,j,1))
If gbcode1>&H80 Then
gbcode2=AscB(MidB(BinStr,j+1,1))
a=gbcode1-&H81
b=gbcode2-&H40
If gbcode2>&H7f Then b=b-1
GBToU=GBToU & ChrW(GB2U(a*190+b)) 'GB2U为转换表
j=j+1
Else
GBToU=GBToU & ChrW(AscB(MidB(BinStr,j,1)))
End If
Next
End Function
'得到边界字符串
boundary=Mid(Request.ServerVariables("CONTENT_TYPE"),31)
'Form中数据的字节数
byteCount=Request.TotalBytes
'Form中的二进制数据
binRead=Request.BinaryRead(byteCount)
'边界ASCII字符串
endStr=ChrB(13)&ChrB(10)&ChrB(45)&ChrB(45)
For i=1 To Len(boundary)
endStr=endStr&ChrB(AscB(Mid(boundary,i,1)))
Next
Dim FormValue(31,3)
Dim byteI '字节指针
E=0
byteI=37+Len(boundary) '第一个元素数据开始处
Do While byteI If AscB(MidB(binRead,byteI,1))=110 Then '元素数据存在
FormValue(E,0)=""
FormValue(E,1)=""
FormValue(E,2)=""
FormValue(E,3)=""
byteI=byteI+6 '名字开始处
nameStart=byteI
byteI=InStrB(byteI,binRead,ChrB(34)) '名字结束处
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'作者:playxp,Email:[email protected]有问题请与我联系
'功能:纯asp分离FORM数据中的二进制文件和文本数据(支持中文)。
'使用方法:将此文件包含在处理form的asp文件中,使用GetValue(name)来读取表单中各个元素的值。
'注意:一定不要使用request.form来读取数据。
'在绝大数的支持asp的主页空间仅能使用有限的组件,不能使用上传组件,而内置的Request对象又不
'支持读取二进制文件,因此使用该文件可以解决上传文件困难的弊病,但在性能上却大打折扣。本程序参考了网上的一些代码。
'由GBK向UNICODE转换
Function GBToU(BinStr,byteNum)
GBToU=""
For j=1 To byteNum
gbcode1=AscB(MidB(BinStr,j,1))
If gbcode1>&H80 Then
gbcode2=AscB(MidB(BinStr,j+1,1))
a=gbcode1-&H81
b=gbcode2-&H40
If gbcode2>&H7f Then b=b-1
GBToU=GBToU & ChrW(GB2U(a*190+b)) 'GB2U为转换表
j=j+1
Else
GBToU=GBToU & ChrW(AscB(MidB(BinStr,j,1)))
End If
Next
End Function
'得到边界字符串
boundary=Mid(Request.ServerVariables("CONTENT_TYPE"),31)
'Form中数据的字节数
byteCount=Request.TotalBytes
'Form中的二进制数据
binRead=Request.BinaryRead(byteCount)
'边界ASCII字符串
endStr=ChrB(13)&ChrB(10)&ChrB(45)&ChrB(45)
For i=1 To Len(boundary)
endStr=endStr&ChrB(AscB(Mid(boundary,i,1)))
Next
Dim FormValue(31,3)
Dim byteI '字节指针
E=0
byteI=37+Len(boundary) '第一个元素数据开始处
Do While byteI
FormValue(E,0)=""
FormValue(E,1)=""
FormValue(E,2)=""
FormValue(E,3)=""
byteI=byteI+6 '名字开始处
nameStart=byteI
byteI=InStrB(byteI,binRead,ChrB(34)) '名字结束处
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22