管理杂谈OA答疑ERP答疑教程搜索

asp将图片保存到access数据库


一般我们上传图片都保存在文件目录下,但有时因为特殊要求需要将图片保存在数据库,接下来我讲一下如何用asp实现将图片保存到access数据库的方法,具体如下:


第一步、要制做一个access数据库,我们给它起名字叫images.mdb,该数据库里有两个字段:id、img,id字段的类型设为自动编号,img字段的类型设为ole对象。



第二步、设计一个上传的表单,根据要求可简可繁。



第三步、设计后台的图片处理程序,可分为图片上传保存程序和图片读取程序。



第四步、图片显示。



下面给出程序并分别做介绍。



一、 表单程序updata.html



它的功能是为上传提供一个界面,表单的enctype属性为multipart/form-data,它是设置表单的mime编码的,只有使用了它才能完整地传送文件的数据。







action="process.asp" method="post">








二、 图片的上传与保存程序process.asp



<%


response.buffer=true


formsize=request.totalbytes


formdata=request.binaryread(formsize)


bncrlf=chrb(13) & chrb(10)


divider=leftb(formdata,clng(instrb(formdata,bncrlf))-1)


datastart=instrb(formdata,bncrlf & bncrlf)+4


dataend=instrb(datastart+1,formdata,divider)-datastart


mydata=midb(formdata,datastart,dataend)


set conngraph=server.createobject("adodb.connection")


conngraph.open "provider=microsoft.jet.oledb.4.0;
data source=" & server.mappath("images.mdb")


set rec=server.createobject("adodb.recordset")


rec.open "select * from images where id is null",conngraph,1,3


rec.addnew


rec("img").appendchunk mydata


rec.update


rec.closes


set rec=nothing


set conngraph=nothing %>


这段程序的功能是将上传图片的数据保存到数据库里。下面分句说明各语句的作用。



response.buffer=true


formsize=request.totalbytes


formdata=request.binaryread(formsize)


打开缓存功能,获取客户端总的发送数据量,获取上传过来的数据。



bncrlf=chrb(13) & chrb(10)


divider=leftb(formdata,clng(instrb(formdata,bncrlf))-1)


这两个语句的意思是设一个二进制回车符及得到一个divider分隔符,目的是为了确定图片的位置。



datastart=instrb(formdata,bncrlf & bncrlf)+4


dataend=instrb(datastart+1,formdata,divider)-datastart


mydata=midb(formdata,datastart,dataend)


以上三个语句是确定图片数据的起始位置、结束位置及实际图片的数据。



set conngraph=server.createobject("adodb.connection")


conngraph.open "provider=microsoft.jet.oledb.4.0;
data source=" & server.mappath("images.mdb")


创建connection对象,并连接microsoft access数据库。



set rec=server.createobject("adodb.recordset")


rec.open "select * from images where id is null",conngraph,1,3


rec.addnew


rec("img").appendchunk mydata


创建recordset对象,打开数据库并置为写入状态,执行rec.addnew增加一条新记录,调用field对象的appendchunk方法将图片数据保存到数据库表的字段中。



后边几句关闭数据库,释放定义组件的设置。



三、 图片的读取程序showing.asp



<%


set conngraph=server.createobject("adodb.connection")


conngraph.open "provider=microsoft.jet.oledb.4.0;
data source=" & server.mappath("images.mdb")


set rec=server.createobject("adodb.recordset")


id=trim(request.querystring("id"))


strsql="select img from images where id="&request.querystring("id")&""


rec.open strsql,conngraph,1,1


response.contenttype = "image/gif"


response.binarywrite rec("img").getchunk(7500000)


rec.close


set rec=nothing


set conngraph=nothing


%>


以上程序是显示图片的后台程序,主要功能是按照要求的id号读取数据库中图片的数据。



response.binarywrite rec("img").getchunk(7500000)


这里调用了field对象的getchunk(size)方法,size是字节数。



需要注意的是使用response对象的 contenttype属性时mime类型的设置,我们这里将返回数据的类型设为图形方式即image/gif方式,它可以显示gif或jpg格式的图形,如果设置为image/*,程序在执行时将不能显示图片。



四、 图片的显示程序show.html



图片上传保存到数据库里就可以调用程序显示图片了,我们再做一个表单程序,提供要显示图片的id号。







action="showing.asp" method="get">


请输入要显示图片的序号:







更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn