则可 以对该字段使用 GetChunk 方法。 如果在 Field 对象上使用 Getchunk 方法时没有当前记录,将产生错误 3021 (无当前记录)。 接下来,我们就要来
设计我们的数据库了,作为测试我们的数据库结构如 下(Access97): 字段名称 id img OLE 对象 类型 自动编号 描述 主键值
用来保存图片数据
对于在 MS SQL Server7 中,对应的结构如下: 字段名称 id img image 类型 描述
int(Identity) 主键值 用来保存图片数据
现在开始正式编写我们的纯ASP代码上传部分了,首先,我们有一个提
供给用户的上传界面,可以让用户选择要上传的图片。代码如下 (upload.htm):
注意代码中黑色斜体的部分,一定要在 Form 中有这个属性,否则,将无 法得到上传上来的数据。 接下来,我们要在 process.asp 中对从浏览器中获取的数据进行必要的处 理,因为我们在 process.asp 中获取到的数据不仅仅包含了我们想要的上传上来 的图片的数据,也包含了其他的无用的信息,我们需要剔除冗余数据,并将处 理过的图片数据保存到数据库中,这里我们以Access97为例。具体代 码如下(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,form
data,divider)-datastart mydata=midb(formdata,datastart,dataend)
set connGraph=server.CreateObject("ADODB.connection") connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" &; server.MapPath("images.mdb") &; ";uid=;PWD=;" connGraph.Open
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.close set rec=nothing set connGraph=nothing %>
好了,这下我们就把上传来的图片保存到了名为 images.mdb 的数据库中 了,剩下的
工作就是要将数据库中的图片数据显示到网页上面了。一般在HT ML中,显示图片都是使用
标签,也就是
,但 是我们的图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个 SRC 属性除了指定路径外,也可以这样使用哦:
所以,我们所要做的就是在 showimg.asp 中从数据库中读出来符合条件的 数据,并返回到 SRC 属性中就可以了,具体代码如下(showimg.asp): <% set connGraph=server.CreateObject("ADODB.connection") connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" &; server.MapPath("images.mdb") &; ";uid=;PWD=;" connGraph.Open set rec=server.createobject("ADODB.recordset") strsql="select img from images where id=" &; trim(request("id")) rec.open str
sql,connGraph,1,1 Response.ContentType = "image/*" Response.BinaryWrite rec("img").getChunk(7500000) rec.close set rec=nothing set connGraph=nothing %>
注意在输出到浏览器之前一定要指定 Response.ContentType = "image/*", 以便正常显示图片。 最后要注意的地方是,我的 process.asp 中作的处理没有考虑到第一页 (upload.htm)中还有其他数据,比如
等等,如果 有这些项目,你的 process.asp 就要注意处理掉不必要的数据。 怎么样,其实上传图片并保存到数据库很简单吧,这样再也不用为自己的 空间无法使用各类的上传组件发愁了吧。还等什么?赶快试一试吧。 (以上所有
程序均在 WinNT4.0 英文版,IIS4,Access97/MS SQL Server7.0 中运 行通过)