posts - 22,comments - 35,trackbacks - 0

          在jsp中實現文件上傳,可用的類庫很多,比如有著名的jspsmart公司SmartUpload,struts里面也有。我這里說說cos,它是O'Reilly公司的,O'Reilly的圖書是很8錯的,這個上傳的組件也做得很棒,最重要的是,它是open source的。

          1. 下載最新的cos包(http://www.servlets.com/cos/index.html),加入到你的classpath中。

          2. 編寫一個需要上傳文件的jsp,為了方便,我就用一個簡單的htm文件了,在這個頁面中,我們讓用戶一次可以上傳3個文件。
            /////////////////////upload.htm////////////////////////////////////
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
            <html>
            <head>
            <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
            <title>無標題文檔</title>
            </head>
            
            <body>
            <!-- enctype的值很重要,upload.jsp為處理上傳的jsp-->
            <form name="form1"  method="post" enctype="multipart/form-data" 
            action="upload.jsp">
            <p>
              <input name="file1" type="file">
            </p>
            <p>
              <input name="file2" type="file">
            </p>
            <p>  <input name="file3" type="file">
            </p>
            <p>
              <input type="submit" name="Submit" value="上傳">
            </p>
            </form >
            
            </body>
            </html>
            
          3. 在c:\下建一個目錄c:\upload,用來存放上傳的文件。

          4. 寫一個jsp或者servlet來實現上傳,我這里用一個叫upload.jsp,這樣就不用配置web.xml,呵呵,比較懶的說。
            ////////////////////////////upload.jsp////////////////////////
            
            <%@page import="java.io.*"%>
            <%@page import="com.oreilly.servlet.MultipartRequest"%>
            <%@page import="com.oreilly.servlet.multipart.CoverFileRenamePolicy"%>
            <%@page contentType="text/html; charset=gb2312" %>
            <%
            //文件上傳后,保存在c:\\upload
            String saveDirectory ="c:\\upload";
            //每個文件最大5m,最多3個文件,所以...
            int maxPostSize =3 * 5 * 1024 * 1024 ;
            //response的編碼為"gb2312",同時采用缺省的文件名沖突解決策略,實現上傳
            MultipartRequest multi =
                   new MultipartRequest(request, saveDirectory, maxPostSize,
                                        "gb2312");
            
            //輸出反饋信息
             Enumeration files = multi.getFileNames();
                 while (files.hasMoreElements()) {
                    System.err.println("ccc");
                   String name = (String)files.nextElement();
                   File f = multi.getFile(name);
                   if(f!=null){
                     String fileName = multi.getFilesystemName(name);
                     String lastFileName= saveDirectory+"\\" + fileName;
                     out.println("上傳的文件:"+lastFileName);
                     out.println("<hr>");
            
                   }
                 }
            
            %>
            <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
            
          5. 最后把這2個文件發布到你的服務器就行了。上傳文件就搞定啦,以后你想在你郵件系統里面嵌入發送附件的功能,用這個來做上傳也不錯啊。

          最后,希望這篇文章對你有所啟發,如有錯誤,敬請批評指正!

          參考資料

          http://macspeed.net/coursejsp/ch07/ch0702.html

          posted on 2005-12-16 13:00 kelven 閱讀(218) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 高邮市| 临颍县| 陇西县| 崇义县| 英吉沙县| 四子王旗| 申扎县| 高台县| 苏尼特右旗| 仪征市| 临安市| 高安市| 象山县| 乌鲁木齐市| 托克托县| 佛山市| 桑植县| 招远市| 丰城市| 秦皇岛市| 兴隆县| 宜良县| 西峡县| 应用必备| 鄂托克前旗| 莱西市| 香港 | 正蓝旗| 彩票| 荔浦县| 奉化市| 珠海市| 武功县| 余江县| 宁明县| 崇文区| 河北区| 大连市| 宝应县| 准格尔旗| 阳曲县|