向数据库读写image文件

题记:其实已经很久没动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将其输出到浏览器上。

三、将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将其输出到浏览器上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值