題記:其實已經(jīng)很久沒動asp了,最近有不少人都在問這個問題 正好已經(jīng)寫好這個東東,于是貼出來,希望對一部分仍在用asp的網(wǎng)友有所幫助
用asp向SQLServer數(shù)據(jù)庫讀寫image文件
一、發(fā)送image文件的表單 img_upload.asp
<form name="form1" ENCTYPE="multipart/form-data" ACTION="img_upfile.asp" METHOD="POST"> <input NAME="picture" TYPE="FILE"> </form>
二、接受表單發(fā)過來的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文件已經(jīng)存在于變量mydata中
三、將image數(shù)據(jù)加入數(shù)據(jù)庫中
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 以上代碼先判斷數(shù)據(jù)庫中id記錄為newid的字段內(nèi)有沒有數(shù)據(jù),如果有則用當(dāng)前數(shù)據(jù)更新數(shù)據(jù)庫,若沒有則將數(shù)據(jù)插入。 請注意:newid在別的地方定義,讀者不必理會
四、讀取數(shù)據(jù)庫中的image文件并顯示在網(wǎng)頁上 用以下代碼將數(shù)據(jù)顯示在網(wǎng)頁上,請注意,<img>標(biāo)簽的src指示為showimg.asp文件。也就是就,<img>標(biāo)簽指向的不一定是.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
取出數(shù)據(jù)后,用Response.BinaryWrite和getChunk將其輸出到瀏覽器上。
本文完 有問題請聯(lián)系夢熊。
出處:藍(lán)色理想
責(zé)任編輯:cjj
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|