解释为新的 GetChunk 操作并从记录的起始处开始读取。如果其他 Recordset 对象不是首个 Recordset 对象的副本,则访问其中的字段不会破坏 GetChunk 操作。如果 Field 对象的 Attributes 属性中的 adFldLong 位设置为 True,则可以对该字段使用 GetChunk 方法。如果在 Field 对象上使用 Getchunk 方法时没有当前记录,将产生错误 3021(无当前记录)。接下来,我们就要来
设计我们的数据库了,作为测试我们的数据库结构如下(Access97):
字段名称 类型 描述
id 自动编号 主键值
img OLE对象 用来保存图片数据
对于在MS SQL Server7中,对应的结构如下:
字段名称 类型 描述
id int(Identity) 主键值
img image 用来保存图片数据
现在开始正式编写我们的纯ASP代码上传部分了,首先,我们有一个提供给用户的上传界面,可以让用户选择要上传的图片。代码如下
(upload.htm):
<;body>
注意代码中黑色斜体的部分,一定要在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,formdata,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的数据库中了,剩下的工作就是要将数据库中的图片数据显示到网页上面了。一般在HTML中,显示图片都是使用标签,也就是,但是我们的图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个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 strsql,connGraph,1,1
Response.ContentType = "image/*"
Response.BinaryWrite rec("img").getChunk(7500000)
rec.close
set rec=nothing
set connGraph=nothing
%>
注意在输出到浏览器之前一定要指定Response.ContentType = "image/*",以便正常显示图片。
再新建一个页面showimg.html ,代码只写,就可以了。
最后要注意的地方是,我的process.asp中作的处理没有考虑到第一页(upload.htm)中还有其他数据,比如等等,如果有这些项目,你的process.asp就要注意处理掉不必要的数据。怎么样,其实上传图片并保存到数据库很简单吧,这样再也不用为自己的空间无法使用各类的上传组件发愁了吧。还等什么?赶快试一试吧。