asp表单提交图片出错:
Microsoft VBScript 运行时错误 错误 '800a0005'
无效的过程调用或参数: 'leftB'
/test3/image_Test.asp,行 8
代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
response.buffer=true
formsize=request.totalbytes
formdata=request.binaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
Set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("images.mdb")
Set rs=server.CreateObject("adodb.recordset")
rs.open "select * from [images] where id is null",conn,1,3
rs.addnew
rs("img").appendchunk mydata
rs.update
rs.close
set rs=nothing
set conn=nothing
%></%>
测试了下题主获取数据的代码没问题,应该是客户端html有问题,确认表单method为post并且设置了 enctype="multipart/form-data",同时注意这个上传页面不能直接访问。
可以加是否有数据的判断,没有数据提示错误什么的
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
response.buffer=true
formsize=request.totalbytes
if formsize<10 then'数据量过小,比如提交空文件或者直接get访问了这个页面
response.Write "<script>alert('无数据')</script>"
response.end
end if
formdata=request.binaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
Set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("images.mdb")
Set rs=server.CreateObject("adodb.recordset")
rs.open "select * from [images] where id is null",conn,1,3
rs.addnew
rs("img").appendchunk mydata
rs.update
rs.close
set rs=nothing
set conn=nothing
%>
判断一下formdata中是否含有bncrlf字符,如果没有就会报错。
你好,
你的问题行出在第7行:
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
你要检查一下formdata 的值是多少,如果它本身是0,那么减去1 就会出现错误.