逐步讲解向Access数据库上传且显示图片

作者:changelive 来源:赛迪网 时间:2008-11-28 16:51:00 

本文从多个角度来讲解如何在Access数据库上如何上传并且显示上所上传图片。

在 * 站制做过程中,需要上传图片、显示图片,上传的图片要能够保存在数据库中,一般小型网站只支持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插件。

标签:
0
投稿

猜你喜欢

  • 仿china.nba.com焦点图轮播展示效果(ie6,ff)

    2008-04-21 12:54:00
  • ASP应用:用stream读文件

    2007-09-24 13:33:00
  • Qzoneing主题视觉设计分享

    2009-07-21 18:12:00
  • 请站在用户的角度上说话

    2009-05-12 12:03:00
  • IE bug: 消失的绝对定位元素

    2009-10-26 17:59:00
  • MYSQL启用日志和查看日志

    2010-12-03 16:24:00
  • ASP实现文件直接下载

    2008-11-19 15:39:00
  • 如何实现某些页面只让特定的用户浏览?

    2010-05-19 21:42:00
  • 如何用表单在线建立目录?

    2010-06-16 09:49:00
  • 网马解密大讲堂——网马解密中级篇(Document.write篇)

    2009-09-16 16:16:00
  • 简单实用的图片播放器1.0(Javascript + css )

    2008-07-16 10:39:00
  • 如何做一个可以让人家申请使用的计数器?

    2010-07-11 21:17:00
  • asp如何在第10000名来访者访问时显示中奖页面?

    2010-06-18 19:45:00
  • asp如何取回已忘记的密码?

    2010-05-13 16:33:00
  • ActionScript3.0是革命性的

    2008-05-01 12:36:00
  • [翻译]标记语言和样式手册 Chapter 16 下一步

    2008-02-22 17:47:00
  • yui3的AOP(面向切面编程)和OOP(面向对象编程)

    2009-09-24 14:47:00
  • CSS用relative和absolute实现的图片定位效果

    2008-10-06 21:37:00
  • ASP下标越界错误的解决方法

    2008-10-19 17:39:00
  • 嵌入式Web视频点播系统实现方法

    2007-10-10 21:17:00
  • asp之家 网络编程 m.aspxhome.com