程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 用Java Servlet實現文件上載

用Java Servlet實現文件上載

編輯:JAVA編程入門知識

  各位大俠可能會對263電子郵箱中的"上傳附件"功能有印象,就是:在浏覽 器中點擊"浏覽",彈出一個對話框,選中文件後,單擊"確定",文件就被上傳到了服務器端。 因為需要,就到網上找了幾個控件,如SmartUpload等,但都覺得不好用,或者 說是不合用,決定自己做一個。近日看到網上也有人提問怎麼上載文件,於是把編制過程整理一遍,希望對大家有所幫助,不足之處,請多多指教。 准備 偵聽工具,如SpyNet(包括CaptureNetPeepNet),目的是用於分析數據包格式;

  Java環境:至少要包括一個Servlet引擎,一套JDK;如果沒有,可以訪問

  "http://www.jsp001.com/article/Application_Server_Comparison_Matrix_20010226.html"

  從這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

  0100: 2E 31 38 2E 32 30 30 2E 38 38 2F 64 65 6D 6F 2F .18.200.88/demo/

  0110: 74 65 73 74 2E 68 74 6D 6C 0D 0A 41 63 63 65 70 test.html..Accep

  0120: 74 2D 4C 61 6E 67 75 61 67 65 3A 20 7A 68 2D 63 t-Language: zh-c

  0130: 6E 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A n..Content-Type:

  0140: 20 6D 75 6C 74 69 70 61 72 74 2F 66 6F 72 6D 2D multipart/form-

  0150: 64 61 74 61 3B 20 62 6F 75 6E 64 61 72 79 3D 2D data; boundary=-

  0160: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------

  0170: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 37 64 31 33 35 32 ----------7d1352

  0180: 61 32 30 31 36 63 0D 0A 41 63 63 65 70 74 2D 45 a2016c..Accept-E

  0190: 6E 63 6F 64 69 6E 67 3A 20 67 7A 69 70 2C 20 64 ncoding: gzip, d

  01A0: 65 66 6C 61 74 65 0D 0A 55 73 65 72 2D 41 67 65 eflate..User-Age

  01B0: 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F 34 2E 30 20 nt: Mozilla/4.0

  01C0: 28 63 6F 6D 70 61 74 69 62 6C 65 3B 20 4D 53 49 (compatible; MSI

  01D0: 45 20 35 2E 30 31 3B 20 57 69 6E 64 6F 77 73 20 E 5.01; Windows

  01E0: 4E 54 20 35 2E 30 29 0D 0A 48 6F 73 74 3A 20 31 NT 5.0)..Host: 1

  01F0: 37 32 2E 31 38 2E 32 30 30 2E 38 38 0D 0A 43 6F 72.18.200.88..Co

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved