哪位高手帮我看看,下面的程序有什么错阿,是文件上传的取文件名,和取内容
不是报错,是我取文件名没有问题,取内容的开始也取的到,但是取文件的结束就取不到,所以文件没有大小,即使存入数据库也没有字节,帮我看看,谢谢!
Private Function BtoS(binstr)
'中文字符Skip标志
skipflag = 0
strC = ""
If Not IsNull(binstr) Then
lnglen = LenB(binstr)
For i = 1 To lnglen
If skipflag = 0 Then
tmpBin = MidB(binstr, i, 1)
'判断是否中文的字符
If AscB(tmpBin) > 127 Then
'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
strC = strC & Chr(AscW(MidB(binstr, i + 1, 1) & tmpBin))
skipflag = 1
Else
strC = strC & Chr(AscB(tmpBin))
End If
Else
skipflag = 0
End If
Next
End If
BtoS = strC
End Function
'把普通字符串转成二进制字符串函数
Private Function StoB(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
StoB = str2bin
End Function
response.buffer=true
lngTotalSize = Request.TotalBytes '获得上载数量的大小
varHeaderValue = Request.BinaryRead(lngTotalSize) '读取上载值
'加1的原因是因为vbCrLf是chr(10)+chr(13) 组成的,所以占了两个字节
lngBoundaryEnd = InStrB(1, varHeaderValue, StoB(vbCrLf)) + 1
varBoundary = LeftB(varHeaderValue, lngBoundaryEnd) '获得分界线的值
'以下处理上载上来的值
lngOffSet = lngBoundaryEnd
'生成一个临时变量,用以查询此表单项的内容是文件还是普通的文本
'tmpFileName = MidB(varHeaderValue, lngFieldNameEnd, 15)
If InStrB(varHeaderValue, StoB("; filename=")) <> 0 Then
lngFileNameStart = InStrB(1, varHeaderValue, StoB("filename=" & Chr(34))) '取得文件名的首位置
lngFileNameEnd = InStrB(lngFileNameStart + LenB(StoB("filename=" & Chr(34))), varHeaderValue, ChrB(34)) '取得文件名的末位置
varFileName = BtoS(MidB(varHeaderValue, lngFileNameStart, lngFileNameEnd - lngFileNameStart))
If lngFileNameEnd - lngFileNameStart < 2 Then
Err.Raise FILENAME_EMPTY
End If
varFileName = Replace(varFileName, "filename=", vbNullString)
varFileName = Replace(varFileName, Chr(34), vbNullString)
'含路径的文件名已经搞定,现在要分离出真正的文件名
For Pos = Len(varFileName) To 1 Step -1
If Mid(varFileName, Pos, 1) = "\" Or Mid(varFileName, Pos, 1) = ":" Then '发现\或:,表示真正的文件名结束
varFileName = Mid(varFileName, Pos + 1, Len(varFileName) - Pos)
Exit For
End If
Next
End If
response.write btos(varheadervalue)
bncrlf=chrB(13) & chrB(10)
divider=leftB(varHeaderValue,clng(instrb(varHeaderValue,bncrlf))-1)
datastart=instrb(varHeaderValue,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,varHeaderValue,divider)-datastart
mydata=midb(varHeaderValue,datastart,dataend)
response.write datastart&"<br>"
response.write dataend&"<br>"
response.write mydata