posts - 12,  comments - 2,  trackbacks - 0
          JSP/Servlet: Oreilly MultiPartRequest 檔案上傳  http://caterpillar.onlyfun.net/GossipCN/JSPServlet/FileUpload.htm
          使用瀏覽器進行檔案上傳時,是使用multipart/form-data編碼,然而Servlet容器并不會自動幫我們處理編碼,而必須由程式設計人員自行處理,在這個部份,我們可以使用Oreilly所提供的上傳套件MultiPartRequest,您可以至以下的網址下載,檔案是cos- 05Nov2002.zip:

          http://www.servlets.com/cos/index.html

          解開zip檔案之后,在lib目錄下可以找到cos.jar,將它復制至您的Web應用程式的WEB-INF/lib下就可以了,基本上, Oreilly的MultiPartRequest相當的容易使用,它可以同時處理多個檔案的上傳,并且提供多個方法可以讓您取得上傳檔案的相關資訊。

          這邊提供一個簡單的例子,首先撰寫上傳的表單:

          • form.htm
          <html> 
          <head>
          <title>檔案上傳</title>
          <meta http-equiv="Content-Type"
          content="text/html; charset=Big5">
          </head>
          <body>
          <b>檔案上傳</b></font></p>

          <form name="UploadForm"
          enctype="multipart/form-data"
          method="post" action="upload.jsp">
          <input type="file" name="File1" size="20" maxlength="20">
          <br>
          <input type="file" name="File2" size="20" maxlength="20">
          <br>
          <input type="submit"value="上傳">
          </form>

          </body>
          </html>

          這邊示范兩個檔案的上傳,表單的enctype必須設定為multipart/form-data,而上傳方法是post,表單元件的輸入型態是 file,當然,上傳的檔案數在實際應用時,是可以用JavaScript等方法來動態進行選擇的。

          上傳的動作處理,撰寫在upload.jsp中:

          • upload.jsp
          <%@page import="com.oreilly.servlet.MultipartRequest" %> 
          <%
          String saveDirectory = "/home/caterpillar/files/";
          // 限制上傳之檔案大小為 5 MB
          int maxPostSize = 5 * 1024 * 1024 ;
          MultipartRequest multi = new MultipartRequest(request ,
          saveDirectory , maxPostSize, "MS950");
          out.println("檔案上傳OK");
          %>

          注意到程式中import了com.oreilly.servlet.MultipartRequest, MultipartRequest可以限制檔案上傳的大小,最后一個參數是上傳檔案名稱的編碼,如果不設定的話,預設是ISO-8859-1,為了支援繁體中文檔名,程式中設定為MS950,如果要支援簡體中文檔名,可以設定為GB2312。

          基本上您只要建立MultipartRequest物件就完成了檔案上傳的處理動作,如果要額外取得檔案資訊,您可以從 MultipartRequest物件取得,例如getFileNames()、getContentType()、getFile()等等, getFileNames()所取得的是Enumeration型態之物件,可以這么使用:
          Enumeration filenames = multi.getFileNames();
          while(filenames.hasMoreElements()) {
              String filename = (String) filenames.nextElement();
               out.println("上傳了檔案" + filename + "<br>");
          }
           
          其它有關于MultipartRequest的說明,您可以參考下載的zip檔中之api說明。

          posted on 2008-06-20 11:23 doodoosun 閱讀(186) 評論(0)  編輯  收藏 所屬分類: Java 相關

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類(6)

          隨筆檔案(11)

          文章分類(30)

          文章檔案(34)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 绵竹市| 松桃| 防城港市| 新巴尔虎左旗| 彭水| 泊头市| 上杭县| 绍兴市| 垦利县| 济宁市| 珲春市| 唐海县| 子长县| 江口县| 凌源市| 宝鸡市| 诏安县| 静安区| 乌鲁木齐县| 曲靖市| 南岸区| 叶城县| 阿拉善右旗| 宁陕县| 九台市| 辰溪县| 固原市| 济阳县| 化隆| 东乌珠穆沁旗| 中方县| 湖北省| 都江堰市| 察雅县| 广东省| 湛江市| 乳山市| 云霄县| 维西| 泾川县| 宁明县|