| 题记:其实已经很久没动asp了,最近有不少人都在问这个问题正好已经写好这个东东,于是贴出来,希望对一部分仍在用asp的网友有所帮助
 
 用asp向SQLServer数据库读写image文件
 
 一、发送image文件的表单
 img_upload.asp
 
 <form name="form1" ENCTYPE="multipart/form-data" ACTION="img_upfile.asp" METHOD="POST">
 <input NAME="picture" TYPE="FILE">
 </form>
 
 
 
 二、接受表单发过来的image文件
 在img_upfile.asp文件中,
 
 response.buffer=true
 formsize=request.totalbytes
 formdata=request.binaryread(formsize)
 Function ImageUp(formsize,formdata)
 bncrlf=chrb(13) & chrb(10)
 divider=leftb(formdata,instrb(formdata,bncrlf)-1)
 datastart=instrb(formdata,bncrlf&bncrlf)+4
 dataend=instrb(datastart+1,formdata,divider)-datastart
 Imageup=midb(formdata,datastart,dataend)
 End Function
 mydata = ImageUp(FormSize,Formdata)
 
 
 通过以上代码后,image文件已经存在于变量mydata中
 三、将image数据加入数据库中
 Set rs_img = Server.CreateObject("ADODB.Recordset")
 sql_img = "SELECT * FROM tbl_images where id='"&newid&"'"
 rs_img.Open sql_img,conn,1,3,1
 If rs_img.eof Then
 strinsert = 1
 Else
 strinsert = 0
 End If
 If strinsert = 1 Then
 rs_img.addnew
 rs_img("id") = newid
 rs_img("class_id") = class_id
 rs_img("img_data").appendchunk mydata
 rs_img.update
 Else
 rs_img("class_id") = class_id
 rs_img("img_data").appendchunk mydata
 rs_img.update
 End If
 rs_img.close
 set rs_img=nothing
 set conn=nothing
 以上代码先判断数据库中id记录为newid的字段内有没有数据,如果有则用当前数据更新数据库,若没有则将数据插入。
 请注意:newid在别的地方定义,读者不必理会
 
 四、读取数据库中的image文件并显示在网页上
 用以下代码将数据显示在网页上,请注意,<img>标签的src指示为showimg.asp文件。也就是就,<img>标签指向的不一定是.gif啊什么的。
 <img src="showimg.asp?id=<%=rs_img("id")%>">
 核心的部分在showimg.asp文件中:Response.Expires = 0
 Response.Buffer = TRUE
 Response.Clear
 Dim id
 id = trim(Request("id"))
 Response.ContentType = "image/*"
 set rs_img=Server.Createobject("ADODB.Recordset")
 sql="select * from tbl_images where id='"&id&"'"
 rs_img.open sql,conn,1,3,1
 
 Dim img_size
 img_size = rs_img("img_data").ActualSize
 Response.BinaryWrite rs_img("img_data").getChunk(img_size)
 rs_img.close
 set rs_img=nothing
 set conn=nothing
 
 取出数据后,用Response.BinaryWrite和getChunk将其输出到浏览器上。 本文完
 有问题请联系梦熊。
 出处:蓝色理想
责任编辑:cjj
 ◎进入论坛网络编程版块参加讨论
	      |