请问一个关于向服务器提交数据的问题,请帮助!

在利用表单上传文件时,我们要加:encType=multipart/form-data在表单中。但这样的话就没法传送普通表单数据。请问如何同时得到两样数据。即:形如:

1<form action="upload.asp" enctype="multipart/form-data" method="post" name="upload">
2<input name="filename1" size="30" type="file"/>
3<input name="comm1" size="40" type="text"/>
4<input name="submit" type="submit" value="上传"/>
5</form>

对以上的表单,我希望在服务器的ASP能得到传送上来的文件,又能得到普通表单数据comm1,这该如何实现。谢谢!!!
---------------------------------------------------------------

无组件图片与文本同步存入数据库的最简单的办法

动感教育网 发布日期:2001-7-17 字数:4798

一:前言

首先,没有料到图片与文本的上传会引起这么大的注意。上一篇贴子(Id=435906)贴出后,有不少人来信说看不懂。或

是仍然不能实现。我就以一种完全简单的手法。完成无组件的文本与图片上传数据库所有过程。希望能帮助所有对此有疑

问的网友。

二:准备工作

按照惯例,我先将我的测试环境告诉大家。

系统:Win98se + pws + asp

编程环境:Visual Interdev 6.0

数据库:Access2000 (因为网友问的最多的都是Access2000的问题。)

建一个库:access2000中,先建好一个Test.mdb的数据库。具体有四个字段。

id ¦ text1 ¦ text2 ¦ img

自动编号 文本 文本 OLE对象 ’如果是sql server 则选择(image即可)

三:Are you ready ,Go!!!

3-1.建上传表单:

我们知道,图像与文本是两种不同制式的文件(二进制,流式文本)而如果要同一表单提交的话,(file格式提交)则

我们获取时就不能用原来的方法request.form而必须用equest.TotalBytes来获得所有的提交资料。但这时两种格式的文件

混合在一起比较难分。我的上一贴已经告诉大家用二进制的方法来分开这些资料。但十分麻烦,要用到许多二进值的函

数,所以许多网友来信问我有没有更简单的方法,好。我可以告诉大家,有!而且保证下面的方法保证一学就会。(这种方

法很另类但伟人说过白猫,黑猫。能上网的就是好猫!)

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  
 7<!--   
 8  
 9Sub form2_onsubmit //** 这里是关键,当form2在提交的过程中时,即活form1的提交   
10  
11form1.submit //**所以我们这里用了两个表单,但只用一个提交就可以了。   
12  
13End Sub   
14  
15\-->   
16  
17</script>
18</head>
19<body>
20<form action="upimage.asp" enctype="multipart/form-data" method="POST" name="form1" target="_blank">   
21  
22Please choose a picture to upload: <br/>
23<input name="picture" type="FILE"/> <br/>
24</form>
25<form action="uptext.asp" method="post" name="form2">
26<input name="text1" type="text"/><br/>
27<input name="text2" type="text"/><br/>
28<input type="submit" value="提交"/>
29</form>
30</body>
31</html>

3-2 兵分两路来处理数据。

首先,文本很简单。

uptext.asp (代码如下)

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

接着,来处理图像。

upimage.asp (具体代码如下)

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

啊?!?!原来如此简单!

四:“显示,我要同页显示”

终于完成了图文同步提交。(真的是同步吗?不是吗?是吗? 唉,我们只是为了解决问题。何必当真哪?不

是 吗?)

现在我们还要让他同页显示出来。其实,这是同样的思路。我们也用两页来完成。

主页面:show.asp

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

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

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

(全文完:希望本文能帮助那些急于想解决本类问题的网友。)

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