我想把图片存成二进制形式,恳请大家帮忙
---------------------------------------------------------------
(upload.htm):
1<html>
2<body>
3<center>
4<form action="process.asp" enctype="multipart/form-data" method="post" name="mainForm">
5<input name="mefile" type="file"/><br/>
6<input name="ok" type="submit" value="OK"/>
7</form>
8</center>
9</body>
10</html>
注意代码中黑色斜体的部分,一定要在Form中有这个属性,否则,将无
法得到上传上来的数据。
接下来,我们要在process.asp中对从浏览器中获取的数据进行必要的处
理,因为我们在process.asp中获取到的数据不仅仅包含了我们想要的上传上来
的图片的数据,也包含了其他的无用的信息,我们需要剔除冗余数据,并将处
理过的图片数据保存到数据库中,这里我们以Access97为例。具体代
码如下(process.asp):
1
2
3response.buffer=true
4
5formsize=request.totalbytes
6
7formdata=request.binaryread(formsize)
8
9bncrlf=chrB(13) & chrB(10)
10
11divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
12
13datastart=instrb(formdata,bncrlf & bncrlf)+4
14
15dataend=instrb(datastart+1,formdata,divider)-datastart
16
17mydata=midb(formdata,datastart,dataend)
18
19
20
21set connGraph=server.CreateObject("ADODB.connection")
22
23connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" &
24
25server.MapPath("images.mdb") & ";uid=;PWD=;"
26
27connGraph.Open
28
29
30
31set rec=server.createobject("ADODB.recordset")
32
33rec.Open "SELECT * FROM [images] where id is null",connGraph,1,3
34
35rec.addnew
36
37rec("img").appendchunk mydata
38
39rec.update
40
41rec.close
42
43set rec=nothing
44
45set connGraph=nothing
46
好了,这下我们就把上传来的图片保存到了名为images.mdb的数据库中
了,剩下的工作就是要将数据库中的图片数据显示到网页上面了。一般在HT
ML中,显示图片都是使用
1<img/>
标签,也就是
1<img src="图片路径"/>
,但
是我们的图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个
SRC属性除了指定路径外,也可以这样使用哦:
1<img src="showimg.asp?id=xxx"/>
所以,我们所要做的就是在showimg.asp中从数据库中读出来符合条件的
数据,并返回到SRC属性中就可以了,具体代码如下(showimg.asp):
1
2
3set connGraph=server.CreateObject("ADODB.connection")
4
5connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" &
6
7server.MapPath("images.mdb") & ";uid=;PWD=;"
8
9connGraph.Open
10
11set rec=server.createobject("ADODB.recordset")
12
13strsql="select img from images where id=" & trim(request("id"))
14
15rec.open strsql,connGraph,1,1
16
17Response.ContentType = "image/*"
18
19Response.BinaryWrite rec("img").getChunk(7500000)
20
21rec.close
22
23set rec=nothing
24
25set connGraph=nothing
26