按下列方式,向数据库表中同时插入图片和文本,记录中的图片怎么都一样?

看看这个你就明白了..

无组件图片与文本同步存入数据库的最简单的办法
upload.asp(具体代码如下)

1 @ language=vbscript 
 1<html>
 2<head>
 3<meta content="VBScript" name="VI60_defaultClientScript"/>
 4<title> File Upload </title>
 5<script id="clientEventHandlersVBS" language="vbscript">   
 6<!--   
 7Sub form2_onsubmit //** 这里是关键,当form2在提交的过程中时,即活form1的提交   
 8form1.submit //**所以我们这里用了两个表单,但只用一个提交就可以了。   
 9End Sub   
10\-->   
11</script>
12</head>
13<body>
14<form action="upimage.asp" enctype="multipart/form-data" method="POST" name="form1" target="_blank">   
15Please choose a picture to upload: <br/>
16<input name="picture" type="FILE"/> <br/>
17</form>
18<form action="uptext.asp" method="post" name="form2">
19<input name="text1" type="text"/><br/>
20<input name="text2" type="text"/><br/>
21<input type="submit" value="提交"/>
22</form>
23</body>
24</html>

3-2 兵分两路来处理数据。
首先,文本很简单。

uptext.asp (代码如下)

1 @ language=vbscript 
 1   
 2strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")   
 3text1=request.form("text1")   
 4text2=request.form("text2")   
 5response.write text1   
 6response.write text2   
 7  
 8set rs=Server.CreateObject("adodb.recordset")   
 9sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" ’这里的意思是选择最后一个Id,既刚刚被改动   
10rs.Open sql,strconn,1,3 ’就是你上传的图像的两个文本字段。   
11  
12rs("text1")=text1 ’注意,这里是改动不是添加,所以不用addnew。   
13rs("text2")=text2   
14rs.Update   
15rs.Close   

接着,来处理图像。
upimage.asp (具体代码如下)

 1   
 2FormSize = Request.TotalBytes ’得到数据   
 3FormData = Request.BinaryRead( FormSize )   
 4  
 5function ImageUp(formsize,formdata) ’这个函数的功能是截取其中的图像部分。   
 6bncrlf=chrb(13) & chrb(10) ’做成函数后。以后你可以自己随意使用了。   
 7divider=leftb(formdata,instrb(formdata,bncrlf)-1)   
 8datastart=instrb(formdata,bncrlf&bncrlf)+4   
 9dataend=instrb(datastart+1,formdata,divider)-datastart   
10imageup=midb(formdata,datastart,dataend)   
11end function   
12  
13Image=ImageUp (FormSize,Formdata) ’这里就是图像部分了。   
14  
15set rs=server.CreateObject("adodb.recordset")   
16strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")   
17sql="SELECT * FROM imgtable"   
18rs.Open sql,strconn,1,3   
19  
20rs.AddNew ’因为表单二在表单一提交的过程中下提交了。   
21rs("img").appendchunk Image ’所以这里是添加。   
22rs.Update   
23rs.Close   
24  
25  
26response.contenttype="image/gif"   
27response.binarywrite imageup(formsize,formdata) ’这里是显示图像。表示成功!   
28  

四:“显示,我要同页显示”
终于完成了图文同步提交。
现在我们还要让他同页显示出来。其实,这是同样的思路。我们也用两页来完成。

主页面:show.asp

1@ Language=VBScript 
1   
2strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")   
3  
4set rs=Server.CreateObject("adodb.recordset")   
5sql="SELECT top 1 * FROM imgtable ORDER BY id DESC"   
6rs.Open sql,strconn,1,3   
 1<html>
 2<body>   
 3以下是你的上传资料。<br/>   
 4文本一:```
 5 Response.Write rs("text1") 
 6```<br/>   
 7文本二:```
 8 Response.Write rs("text2") 
 9```<br/>   
10  
11你的图像:   
12<img =rs("id")="" ```="" src="showimg.asp?id=```"/> ’注意这里,这才是关键。他可以实现网页图像与文本   
13</body> ’共存。   
14</html>

幕后页面:showimg.asp (说他是幕后的页面,因为他潜伏在主页面里。看上是一个页面一样)

1@ Language=VBScript 
1   
2strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")   
3id=Request("id")   
4set rs=server.CreateObject("adodb.recordset")   
5sql="SELECT * FROM imgtable where id="&id   
6rs.Open sql,strconn,1,3   
7response.contenttype="image/gif"   
8Response.BinaryWrite rs("img")   

---------------------------------------------------------------

你用的事select top 1
当然都是同一id了

Published At
Categories with Web编程
Tagged with
comments powered by Disqus