人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

純asp分離FORM數據中的二進制文件與文本數據

純asp分離FORM數據中的二進制文件與文本數據

更新時間:2022-07-04 文章作者:未知 信息來源:網絡 閱讀次數:

以下源代碼為一個文件

<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'作者:playxp,Email:playxp@sohu.com有問題請與我聯系
'功能:純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<byteCount
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)) '名字結束處
nameLen=byteI-nameStart '名字長度
FormValue(E,0)=GBToU(MidB(binRead,nameStart,nameLen),nameLen) '讀入名字
If AscB(MidB(binRead,byteI+1,1))=13 Then '元素為文本
byteI=byteI+5 '文本數據開始處
dataStart=byteI
byteI=InStrB(byteI,binRead,endStr) '文本數據結束處
dataLen=byteI-dataStart '文本數據長度
FormValue(E,1)=GBToU(MidB(binRead,dataStart,dataLen),dataLen) '讀入文本數據
Else '元素為文件
byteI=byteI+13 '路徑開始處
pathStart=byteI
byteI=InStrB(byteI,binRead,ChrB(34)) '路徑結束處
pathLen=byteI-pathStart
FormValue(E,2)=GBToU(MidB(binRead,pathStart,pathLen),pathLen) '讀入路徑
byteI=byteI+17 '文件類型開始
typeStart=byteI
byteI=InStrB(byteI,binRead,ChrB(13)) '文件類型結束處
typeLen=byteI-typeStart '文件類型長度
FormValue(E,3)=GBToU(MidB(binRead,typeStart,typeLen),typeLen) '讀入文件類型
byteI=byteI+4 '文件數據開始處
dataStart=byteI
byteI=InStrB(byteI,binRead,endStr) '文件數據結束處
dataLen=byteI-dataStart '文件數據長度
FormValue(E,1)=MidB(binRead,dataStart,dataLen) '讀入文件數據
End If
byteI=byteI+38+Len(boundary) '移向下一元素數據開始處
E=E+1
Else
Exit Do
End If
Loop

'根據元素名來檢索元素數據
'如果表單元素為文本數據直接返回其值
'如果表單元素為二進制數據文件,則返回一3元素數組,第一個元素為文件的二進制數據,
'第二個元素為文件的路徑,第三個為文件的類型。
Function GetValue(name)
For i=0 To 31
If StrComp(FormValue(i,0),name,1)=0 Then
If FormValue(i,3)="" Then
GetValue=FormValue(i,1)
Else
GetValue=Array(FormValue(i,1),FormValue(i,2),FormValue(i,3))
End If
Exit Function
End If
Next
GetValue=Null
End Function
%>


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 泗洪县| 临朐县| 两当县| 淮阳县| 定兴县| 宁武县| 和龙市| 福州市| 泰宁县| 双辽市| 金寨县| 察隅县| 井研县| 东丰县| 娄底市| 周宁县| 拜城县| 鹤壁市| 定边县| 凤阳县| 忻城县| 芮城县| 太和县| 曲阜市| 贵溪市| 临湘市| 左云县| 宜兴市| 驻马店市| 白银市| 永清县| 松溪县| 偃师市| 托克逊县| 井陉县| 沙雅县| 德保县| 咸宁市| 天台县| 阿拉善盟| 防城港市|