ASP中上传文件到数据库的奇怪问题,请高手帮忙!
我的一个系统,上传文件到数据库,在windows2003下,可以上传,但是在Windows2000下就有错误,Microsoft VBScript 运行时错误 error '800a0005'
无效的过程调用或参数: 'Chr'
/office/attemper/dayproduction/editsave.asp, line 26
这是26行代码:
ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
-----------------
上传的代码,如下:
<%@Language="VBScript"%>
<%Response.Expires=0%>
<!--#include file="..\conn.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" href="../gzrs.css" type="text/css">
<title>New Page 1</title>
</head>
<body>
<%
Function bin2str(binstr)
Dim varlen,clow,ccc,skipflag
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
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
varByteCount = Request.TotalBytes
bnCRLF = chrB( 13 ) & chrB( 10 )
binHTTPHeader=Request.BinaryRead(varByteCount)
Divider = LEFTB(binHTTPHeader, INSTRB( binHTTPHeader, bnCRLF ) - 1 )
'开始读非文件域的数据
Do while lenB(binHTTPHeader)>46
binHeaderData=LeftB(binHTTPHeader,INSTRB(binHTTPHeader,bnCRLF & bnCRLF)-1)
strHeaderData=bin2str(binHeaderData)
lngFieldNameStart=Instr(strHeaderData,"name=" & chr(34))+Len("name="& chr(34))
lngFieldNameEnd=Instr(lngFieldNameStart,strHeaderData,chr(34))
strFieldName=Mid(strHeaderData,lngFieldNameStart,lngFieldNameEnd-lngFieldNameStart)
strFieldName=Trim(strFieldName)
strFieldName=Replace(strFieldName,vbcrlf,vbnullstring) '判断文件数据时候开始
If strComp(strFieldName,"FileUploadStart",1)=0 Then
binHTTPHeader=MIDB(binHTTPHeader,INSTRB( DataStart + 1, binHTTPHeader,divider ))
exit do
End if
DataStart = INSTRB( binHTTPHeader, bnCRLF & bnCRLF ) + 4
DataEnd = INSTRB( DataStart + 1, binHTTPHeader, divider )- DataStart
binFieldValue=MIDB( binHTTPHeader, DataStart, DataEnd )
strFieldValue=bin2str(binFieldValue)
strFieldValue=Trim(strFieldValue)
strFieldValue=Replace(strFieldValue,vbcrlf,vbnullstring)
'非文件上传域变量赋值
execute strFieldName & "=""" & strFieldValue & """"
binHTTPHeader=MIDB(binHTTPHeader,INSTRB(DataStart + 1, binHTTPHeader, divider ))
loop
'开始处理文件数据
binHeaderData=LeftB(binHTTPHeader,INSTRB(binHTTPHeader,bnCRLF & bnCRLF)-1)
strHeaderData=bin2str(binHeaderData) '读取上传文件的Content-Type
lngFileContentTypeStart=Instr(strHeaderData,"Content-Type:")+Len("Content-Type:")
strFileContentType=Trim(Mid(strHeaderData,lngFileContentTypeStart))
strFileContentType=Replace(strFileContentType,vbCRLF,vbNullString) '读取上传的文件名
lngFileNameStart=Instr(strHeaderData,"filename="&chr(34))+Len("filename="&chr(34))
lngFileNameEnd=Instr(lngFileNameStart,strHeaderData,chr(34))
strFileName=Mid(strHeaderData,lngFileNameStart,lngFileNameEnd-lngFileNameStart)
strFileName=Trim(strFileName)
strFileName=Replace(strFileName,vbCRLF,vbNullString) '读取上传文件数据
DataStart = INSTRB( binHTTPHeader, bnCRLF & bnCRLF ) + 4
DataEnd = INSTRB( DataStart + 1, binHTTPHeader, divider ) - DataStart
binFieldValue=MIDB( binHTTPHeader, DataStart, DataEnd ) '将上传的文件写入数据库
sql="select * from 调度报表 where 日期='"&dateinput&"' and 报表名称='"&reporttype&"'"
set rs=server.CreateObject("ADODB.Recordset")
rs.Open sql,conn,3,3
if rs.eof then
rs.addnew
end if
rs("日期")=dateinput
rs("报表名称")=reporttype
If trim(strFileName)<>"" Then
rs("数据类型")=strFileContentType
rs("数据").AppendChunk binFieldValue 'BLOB数据不能直接赋值
End if
rs.update
rs.close
set rs=Nothing
conn.close
response.redirect "editmain.asp?dateinput="&dateinput&"&reporttype="&reporttype
%>
</body>
</html>
--------------
请高手帮忙呀.