posts - 22,comments - 35,trackbacks - 0

          在jsp中實現(xiàn)文件上傳,可用的類庫很多,比如有著名的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>無標(biāo)題文檔</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來實現(xiàn)上傳,我這里用一個叫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",同時采用缺省的文件名沖突解決策略,實現(xiàn)上傳
            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個文件發(fā)布到你的服務(wù)器就行了。上傳文件就搞定啦,以后你想在你郵件系統(tǒng)里面嵌入發(fā)送附件的功能,用這個來做上傳也不錯啊。

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

          參考資料

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

          posted on 2005-12-16 13:00 kelven 閱讀(218) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 集安市| 兴宁市| 叙永县| 徐水县| 安义县| 海晏县| 茶陵县| 临潭县| 广水市| 堆龙德庆县| 克东县| 宁明县| 云林县| 平遥县| 河西区| 溧阳市| 土默特右旗| 壶关县| 东辽县| 河北区| 蓝山县| 苏尼特右旗| 耿马| 德庆县| 临汾市| 中卫市| 邵阳县| 伊通| 长兴县| 从化市| 泽普县| 广灵县| 唐河县| 栾城县| 长泰县| 武穴市| 沂源县| 昌邑市| 广丰县| 庆元县| 塔河县|