asp上传图片并显示问题,leftB函数问题

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
   %>

img


有其他问题可以继续交流~

判断一下formdata中是否含有bncrlf字符,如果没有就会报错。

你好,
你的问题行出在第7行:

divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)

你要检查一下formdata 的值是多少,如果它本身是0,那么减去1 就会出现错误.