软件报
首页 |  新闻 |  软件 |  网络 |  编程 |  硬件 |  业界 | 
  首页>新闻>正文
 
如何向ACCESS数据库上传并显示图片
安国平

《软件报》20期

    在动态网站制做过程中,需要上传图片、显示图片,上传的图片要能够保存在数据库中,一般小型网站只支持ACCESS数据库,如何上传图片,将其保存在数据库中并将其显示出来,是数据库+ASP应用技术之一。许多书籍只介绍了SQL数据库的方法,而对ACCESS却很少提及。网上有不少关于ACCESS数据库上传图片、显示图片的文章,多数文章介绍的不够全面,有些程序根本就不能开通,对于初学者来说很难把握,我通过参考一些文章,向初学者提供一套比较完整的程序,较全面地介绍了利用上传向ACCESS数据库添加图片、显示图片,希望我们这些初学的同志少走一些弯路。

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

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

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

    第四步,图片显示。

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

    一、 表单程序updata.html

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

<html> 

<body> 

<center> 

   <form name="mainForm" enctype="multipart/form-data" 

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

    <input type=file name=mefile>

    <input type=submit name=ok value="上传"> 

   </form> 

</center> 

</body> 

</html>

    二、 图片的上传与保存程序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号。

<html> 

<body> 

<center> 

   <form name="mainForm" enctype="text/plain" 

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

    请输入要显示图片的序号:<input type=id name=id>

    <input type=submit name=ok value="提交"> 

   </form> 

</center> 

</body> 

</html>

    以上程序及数据库制做好以后上传到服务器上就可以使用了,也可以在本地服务器上使用,但本机要安装ⅡS插件。

    上传图片演示地址:http://www.hbpet001.com/pic/updata.html 

    图片显示演示地址:http://www.hbpet001.com/pic/show.html 

文章检索    


新闻>热门文章

·如何向ACCESS数据库上传并显示图片
·共享软件的今天与明天
·《软件报》2006年成都读者见面会通知
·旧机折价换购 惠普至尊精彩升级
·激活软件产业生态链——软件作者谈共享软件的盈利与发展
·HP LaserJet 1020plus上市,展开惠普黑白激打新“百万”攻势
·ICSE 2006:中国软件工程和谐融入世界
·2199引爆市场需求 惠普奏响彩激最强音
·短信平台的开发与应用(一)
·算完三笔帐后我们支持AVS
·互联网运动又回来了
·信息产业收入突破两万亿元 成第一支柱产业
·国产软件陷入3大争论 反垄断法出台迫在眉睫
·网络游戏呼唤产业化
·原微软副总裁李开复闪电跳槽Google
·加拿大计算机市场与应用一瞥
·硬盘质保过程中的奸商
·惠普拓展消费电子 IT业巨头转型已成趋势
·扶植中小企业信息化 为客户提供更多方案选择
·英特尔P4引发“国产芯片”争议
·通用OA——办公的贤内助
·Sun欲为民企信息化架梯
·3721遇雷
·IT业界的七个关键词
·惠普首创IT缺陷产品召回 危机公关与服务考验IT厂商

日期:2007-6-18 22:43:41
 【关闭窗口】 
我要评论
                
评论标题:     (共有4条评论)   

请注意:
· 遵守国家有关法律、法规,尊重网上道德。
· 本网拥有管理用户和评论的一切权利,并有权在网站内转载或引用评论。
软件报


 

加入收藏 | 帮助中心 | 投稿指南 | 广告服务 | 报社简介 | 关于我们

Copyright 2004 By SoftWeek. All Rights Reserved     WebMaster:softsky@sweek.com
版权所有  软件报