向SQLServer数据库读写image文件

网络整理 - 07-26
用asp向SQLServer数据库读写image文件

一、发送image文件的表单

img_upload.asp

<form ENCTYPE="multipart/form-data" ACTION="img_upfile.asp" METHOD="POST"><input TYPE="FILE"></form>

二、接受表单发过来的image文件

在img_upfile.asp文件中
response.buffer=trueformsize=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)+4dataend=instrb(datastart+1,formdata,divider)-datastartImageup=midb(formdata,datastart,dataend)End Functionmydata = ImageUp(FormSize,Formdata)

通过以上代码后,image文件已经存在于变量mydata中

三、将image数据加入数据库中
Set rs_img = Server.CreateObject("ADODB.Recordset")sql_img = "SELECT * FROM tbl_images where"rs_img.Open sql_img,conn,1,3,1If rs_img.eof Thenstrinsert = 1Elsestrinsert = 0End IfIf strinsert = 1 Thenrs_img.addnew rs_img("id") = newidrs_img("class_id") = class_idrs_img("img_data").appendchunk mydata rs_img.update Elsers_img("class_id") = class_idrs_img("img_data").appendchunk mydatars_img.updateEnd Ifrs_img.closeset 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 = 0Response.Buffer = TRUEResponse.Clear Dim idid = trim(Request("id"))Response.ContentType = "image/*" set rs_img=Server.Createobject("ADODB.Recordset") sql="select * from tbl_images where" rs_img.open sql,conn,1,3,1Dim img_sizeimg_size = rs_img("img_data").ActualSizeResponse.BinaryWrite rs_img("img_data").getChunk(img_size)rs_img.close set rs_img=nothing set conn=nothing

取出数据后,用Response.BinaryWrite和getChunk将其输出到浏览器上。