六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

支持中文的無組件文件上傳:upload.inc

[摘要]文件名:upload.inc 說明:支持中文的無組件文件上傳ASP函數,由于ASP不支持二進制寫入文件,所以存成文件時必須使用組件,本函數只提供截取上傳文件的數據,可以寫入到數據庫。 <SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> Function Ge...

文件名:upload.inc
說明:支持中文的無組件文件上傳ASP函數,由于ASP不支持二進制寫入文件,所以存成文件時必須使用組件,本函數只提供截取上傳文件的數據,可以寫入到數據庫。

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
Function GetUpload(FormData)
Dim DataStart,DivStr,DivLen,DataSize,FormFieldData
'分隔標志串(+CRLF)
DivStr = LeftB(FormData,InStrB(FormData,str2bin(VbCrLf)) + 1)
'分隔標志串長度
DivLen = LenB(DivStr)
PosOpenBoundary = InStrB(FormData,DivStr)
PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
Set Fields = CreateObject("Scripting.Dictionary")

While PosOpenBoundary > 0 And PosCloseBoundary > 0
'name起始位置(name="xxxxx"),加6是因為[name="]長度為6
FieldNameStart = InStrB(PosOpenBoundary,FormData,str2bin("name=")) + 6
FieldNameSize = InStrB(FieldNameStart,FormData,ChrB(34)) - FieldNameStart '(")的ASC值=34
FormFieldName = bin2str(MidB(FormData,FieldNameStart,FieldNameSize))

'filename起始位置(filename="xxxxx")
FieldFileNameStart = InStrB(PosOpenBoundary,FormData,str2bin("filename=")) + 10
If FieldFileNameStart < PosCloseBoundary And FieldFileNameStart > PosopenBoundary Then
FieldFileNameSize = InStrB(FieldFileNameStart,FormData,ChrB(34)) - FieldFileNameStart '(")的ASC值=34
FormFileName = bin2str(MidB(FormData,FieldFileNameStart,FieldFileNameSize))
Else
FormFileName = ""
End If

'Content-Type起始位置(Content-Type: xxxxx)
FieldFileCTStart = InStrB(PosOpenBoundary,FormData,str2bin("Content-Type:")) + 14
If FieldFileCTStart < PosCloseBoundary And FieldFileCTStart > PosOpenBoundary Then
FieldFileCTSize = InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf & VbCrLf)) - FieldFileCTStart
FormFileCT = bin2str(MidB(FormData,FieldFileCTStart,FieldFileCTSize))
Else
FormFileCT = ""
End If

'數據起始位置:2個CRLF開始
DataStart = InStrB(PosOpenBoundary,FormData,str2bin(VbCrLf & VbCrLf)) + 4
If FormFileName <> "" Then
'數據長度,減1是因為數據文件的存取字節數問題(可能是AppendChunk方法的問題):
'由于字節數為奇數的圖象存到數據庫時會去掉最后一個字符導致圖象不能正確顯示,
'字節數為偶數的數據文件就不會出現這個問題,因此必須保持字節數為偶數。
DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 1
FormFieldData = MidB(FormData,DataStart,DataSize)
Else
'數據長度,減2是因為分隔標志串前有一個CRLF
DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 2
FormFieldData = bin2str(MidB(FormData,DataStart,DataSize))
End If

'建立一個Dictionary集存儲Form中各個Field的相關數據
Set Field = CreateUploadField()
Field.Name = FormFieldName
Field.FilePath = FormFileName
Field.FileName = GetFileName(FormFileName)
Field.ContentType = FormFileCT
Field.Length = LenB(FormFieldData)
Field.Value = FormFieldData

Fields.Add FormFieldName, Field

PosOpenBoundary = PosCloseBoundary
PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
Wend
Set GetUpload = Fields
End Function

'把二進制字符串轉換成普通字符串函數
Function bin2str(binstr)
Dim varlen,clow,ccc,skipflag
'中文字符Skip標志
skipflag=0
ccc = ""
If Not IsNull(binstr) Then
varlen=LenB(binstr)
For i=1 To varlen
If skipflag=0 Then
clow = MidB(binstr,i,1)
'判斷是否中文的字符
If AscB(clow) > 127 Then
'AscW會把二進制的中文雙字節字符高位和低位反轉,所以要先把中文的高低位反轉
ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
skipflag=1
Else
ccc = ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
End If
bin2str = ccc
End Function


'把普通字符串轉成二進制字符串函數
Function str2bin(varstr)
str2bin=""
For i=1 To Len(varstr)
varchar=mid(varstr,i,1)
varasc = Asc(varchar)
' asc對中文字符求出來的值可能為負數,
' 加上65536就可求出它的無符號數值
' -1在機器內是用補碼表示的0xffff,
' 其無符號值為65535,65535=-1+65536
' 其他負數依次類推。
If varasc<0 Then
varasc = varasc + 65535
End If
'對中文的處理:把雙字節低位和高位分開
If varasc>255 Then
varlow = Left(Hex(Asc(varchar)),2)
varhigh = right(Hex(Asc(varchar)),2)
str2bin = str2bin & chrB("&H" & varlow) & chrB("&H" & varhigh)
Else
str2bin = str2bin & chrB(AscB(varchar))
End If
Next
End Function

'取得文件名(去掉Path)
Function GetFileName(FullPath)
If FullPath <> "" Then
FullPath = StrReverse(FullPath)
FullPath = Left(FullPath, InStr(1, FullPath, "\") - 1)
GetFileName = StrReverse(FullPath)
Else
GetFileName = ""
End If
End Function
</SCRIPT>
<SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT>
function CreateUploadField(){ return new uf_Init() }
function uf_Init(){
this.Name = null
this.FileName = null
this.FilePath = null
this.ContentType = null
this.Value = null
this.Length = null
}
</SCRIPT> (出處:熱點網絡)


主站蜘蛛池模板: 天天色天天色 | 亚洲欧洲久久 | 五月天婷婷精品免费视频 | 人人爽天天碰天天躁夜夜躁 | 日本极品另类 | 视频一区日韩 | 青青草原播放器 | 性色午夜视频免费男人的天堂 | 亚洲女人小便 | 青娱分类视频精品免费2 | 色综合久久综合欧美综合 | 视频一区二区在线观看 | 伊人222成人综合网 伊人.com | 我怒了在线播放完整版 | 色狠台湾色综合网站 | 天天躁狠狠躁狠狠躁夜夜躁 | 天天夜夜骑 | 一级床片40分钟免费视频 | 午夜视频网站在线观看 | 亚洲乱码一二三四区麻豆 | 一级做a毛片免费视频 | 天天干夜夜想 | 中文精品久久久久国产网站 | 亚洲视频在线观看一区 | 日本不卡视频一区二区三区 | 在线观看亚洲国产 | 清清草视频 | 中文字幕在线免费视频 | 亚洲乱码在线 | 青青青青青免精品视频 | 日韩一级黄色毛片 | 天天综合天天综合色在线 | 最新中文字幕一区二区乱码 | 青青国产在线视频 | 亚洲国产成人久久综合一区 | 亚洲a在线视频 | 天堂在线影院 | 三级自拍 | 日本不卡免费新一二三区 | 欲色天天 | 孕妇三片高清在线观看 |