題記:其實已經很久沒動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將其輸出到瀏覽器上。
本文完
有問題請聯系夢熊。
文章來源于領測軟件測試網 http://www.kjueaiud.com/