逐步讲解向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插件。


猜你喜欢
- Python是一种非常富有表现力的语言。它为我们提供了一个庞大的标准库和许多内置模块,帮助我们快速完成工作。然而,许多人可能会迷失在它提供的
- 本文实例讲述了JS实现淘宝支付宝网站的控制台菜单效果。分享给大家供大家参考。具体如下:这是一款支付宝网站中的控制台总菜单,可实现动画效果的显
- 本文是在上篇文章Python中的type和object,做的补充,希望大家喜欢。这篇博客主要描述Python的新风格对象(new-style
- 说明Python语言中列表(List)与其他语言的数组(Array)类似,是一种有序的集合数据结构,Python List可支持各种数据类型
- 描述random() 方法返回随机生成的一个实数,它在[0,1)范围内。import randomhelp(random)FUNCTIONS
- 本文实例讲述了Python Django框架实现应用添加logging日志。分享给大家供大家参考,具体如下:Django uses Pyth
- 1.删除 1)删除记录 Delete from 表名 where id ='xx' 2)
- 这次主要记录在windows下嵌入 python 解释器的过程,程序没有多少,主要是头文件与库文件的提取。程序平台:windows10 64
- 数组的组合主要有:1.水平组合:np.hstack(arr1,arr2) 或 concatenate(arr1,arr2,axis=1)2.
- 小引 笔者认为web开发包括设计html,javascript,css,以及一种高级语言,比如c#,java等等,本文分为三部分,第一部分为
- 最近使用vscode进行前端编程,遇到一些问题网上说明的不是很明显,故记录一下 1.开vscode使用CTRL+`或者点击查看到集成终端打开
- 本文实例为大家分享了python+opencv识别图片中足球的方法,供大家参考,具体内容如下先补充下霍夫圆变换的几个参数知识:dp,用来检测
- 这个是用python实现的基本的增删改查的学生管理系统,其中主要是对输入的数据进行合法性检测的问题,这次又对函数进行了练习!掌握函数更加熟练
- 有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__
- 通过web框架搭建一个最简易的程序:第一步:新建一个web框架程序通过CMD进入到想要创建web程序的文件夹数据命令django-admin
- 反射是在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象
- php var_dump 函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.来看看var_du
- 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar第二步:导入下载的JDB
- “ 这是MySQL系列笔记的第十三篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者
- 上一篇文章介绍了线程的使用。然而 Python 中由于 Global Interpreter Lock (全局解释锁 GIL )的存在,每个