各位大侠可能会对263电子邮箱中的"上传附件"功能有印象,就是:在浏览 器中点击"浏览",弹出一个对话框,选中文件后,单击"确定",文件就被上传到了服务器端。 因为需要,就到网上找了几个控件,如SmartUpload等,但都觉得不好用,或者 说是不合用,决定自己做一个。近日看到网上也有人提问怎么上载文件,于是把编制过程整理一遍,希望对大家有所帮助,不足之处,请多多指教。 预备 侦听工具,如SpyNet(包括CaptureNetPeepNet),目的是用于分析数据包格式;
Java环境:至少要包括一个Servlet引擎,一套JDK;假如没有,可以访问这里
从这36款中随便找出一种来,安装运行即可。jsp服务器都会支持SERVLET,因为JSP本身就是先被编译成SERVLET再执行的。 过程
1、制作Html页面,用于上传文件。需要注重:要指定enctype属性为"multipart/form-data",因为数据流的格式是不一样的。
<form action="/java/servlet/powerise.nms.web.UploadFile"
method=post enctype="multipart/form-data"> <p>
<input type=radio name=type value=0>model
<input type=radio name=type value=1>report <input name=id >
<input type=file name=file value="test"> </p>
<input type=submit> </form>
2、HTML页面做好后,就可以开始分析数据流了。先打开侦听器,然后在浏览器(IE, Netscape)中打开本页面,随意选择一个文件,单击"确定",看看侦听器听到了什么。在跳过前面几个包后,可以得到下面这两个相关的包。
第一个包的很轻易明白,在Servlet中,用getHeader(String)能得到的内容就在这里面。不过这个包,用HttpServletRequest的getInputStream是得不到的。
关于HTTP协议的更多信息,可以访问www.w3c.org。
0000: 00 E0 4C DD 2F 4F 00 50 BA A6 C3 CF 08 00 45 00 ..L./O.P......E.
0010: 02 3E 01 46 40 00 80 06 0E F5 AC 12 C8 01 AC 12 .>.F@...........
0020: C8 58 04 12 00 50 48 82 2A 39 FA 97 28 31 50 18 .X...PH.*9..(1P.
0030: 44 70 A4 76 00 00 50 4F 53 54 20 2F 6A 61 76 61 Dp.v..POST /java
0040: 2F 73 65 72 76 6C 65 74 2F 69 6D 63 2E 55 70 6C /servlet/imc.Upl
0050: 6F 61 64 20 48 54 54 50 2F 31 2E 31 0D 0A 41 63 oad HTTP/1.1..Ac
0060: 63 65 70 74 3A 20 69 6D 61 67 65 2F 67 69 66 2C cept: image/gif,
0070: 20 69 6D 61 67 65 2F 78 2D 78 62 69 74 6D 61 70 image/x-xbitmap
0080: 2C 20 69 6D 61 67 65 2F 6A 70 65 67 2C 20 69 6D , image/jpeg, im
0090: 61 67 65 2F 70 6A 70 65 67 2C 20 61 70 70 6C 69 age/pjpeg, appli
00A0: 63 61 74 69 6F 6E 2F 76 6E 64 2E 6D 73 2D 70 6F cation/vnd.ms-po
00B0: 77 65 72 70 6F 69 6E 74 2C 20 61 70 70 6C 69 63 werpoint, applic
00C0: 61 74 69 6F 6E 2F 76 6E 64 2E 6D 73 2D 65 78 63 ation/vnd.ms-exc
00D0: 65 6C 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E 2F el, application/
00E0: 6D 73 77 6F 72 64 2C 20 2A 2F 2A 0D 0A 52 65 66 msWord, */*..Ref
00F0: 65 72 65 72 3A 20 68 74 74 70 3A 2F 2F 31 37 32 erer: http://172