【永恒的瞬間】
          ?Give me hapy ?

          文件上傳在web應用中非常普遍,要在jsp環境中實現文件上傳功能是非常容易的,因為網上有許多用java開發的文件上傳組件,本文以commons-fileupload組件為例,為jsp應用添加文件上傳功能。

          common-fileupload組件是apache的一個開源項目之一,可以從http://jakarta.apache.org/commons/fileupload/下載。用該組件可實現一次上傳一個或多個文件,并可限制文件大小。
          下載后解壓zip包,將commons-fileupload-1.0.jar復制到tomcat的webapps\你的webapp\WEB-INF\lib\下,目錄不存在請自建目錄。

          新建一個servlet: Upload.java用于文件上傳:

          java 代碼
          1. import java.io.*;   
          2. import java.util.*;   
          3. import javax.servlet.*;   
          4. import javax.servlet.http.*;   
          5. import org.apache.commons.fileupload.*;   
          6.   
          7. public class Upload extends HttpServlet {   
          8.   
          9.     private String uploadPath = "C:\\upload\\"; // 上傳文件的目錄  
          10.     private String tempPath = "C:\\upload\\tmp\\"; // 臨時文件目錄   
          11.   
          12.     public void doPost(HttpServletRequest request,   
          13.     HttpServletResponse response)   
          14.     throws IOException, ServletException   
          15.     {   
          16.     }   
          17. }  

          在doPost()方法中,當servlet收到瀏覽器發出的Post請求后,實現文件上傳。以下是示例代碼:

          java 代碼
          1. public void doPost(HttpServletRequest request,   
          2. HttpServletResponse response)   
          3. throws IOException, ServletException   
          4. {   
          5.     try {   
          6.         DiskFileUpload fu = new DiskFileUpload();   
          7.         // 設置最大文件尺寸,這里是4MB   
          8.         fu.setSizeMax(4194304);   
          9.         // 設置緩沖區大小,這里是4kb   
          10.         fu.setSizeThreshold(4096);   
          11.         // 設置臨時目錄:   
          12.         fu.setRepositoryPath(tempPath);   
          13.   
          14.         // 得到所有的文件:   
          15.         List fileItems = fu.parseRequest(request);   
          16.         Iterator i = fileItems.iterator();   
          17.         // 依次處理每一個文件:   
          18.         while(i.hasNext()) {   
          19.             FileItem fi = (FileItem)i.next();   
          20.             // 獲得文件名,這個文件名包括路徑:   
          21.             String fileName = fi.getName();   
          22.             // 在這里可以記錄用戶和文件信息   
          23.             // ...   
          24.             // 寫入文件,暫定文件名為a.txt,可以從fileName中提取文件名:   
          25.             fi.write(new File(uploadPath + "a.txt"));   
          26.         }   
          27.     }   
          28.     catch(Exception e) {   
          29.         // 可以跳轉出錯頁面   
          30.     }   
          31. }  

          如果要在配置文件中讀取指定的上傳文件夾,可以在init()方法中執行:

          java 代碼
          1. public void init() throws ServletException {   
          2.     uploadPath = ....   
          3.     tempPath = ....   
          4.     // 文件夾不存在就自動創建:   
          5.     if(!new File(uploadPath).isDirectory())   
          6.         new File(uploadPath).mkdirs();   
          7.     if(!new File(tempPath).isDirectory())   
          8.         new File(tempPath).mkdirs();   
          9. }  

          編譯該servlet,注意要指定classpath,確保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。
          配置servlet,用記事本打開tomcat\webapps\你的webapp\WEB-INF\web.xml,沒有的話新建一個。
          典型配置如下:

          xml 代碼
          1. xml version="1.0" encoding="ISO-8859-1"?>  
          2.     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   
          3.     "http://java.sun.com/dtd/web-app_2_3.dtd">  
          4.   
          5. <web-app>  
          6.     <servlet>  
          7.         <servlet-name>Uploadservlet-name>  
          8.         <servlet-class>Uploadservlet-class>  
          9.     servlet>  
          10.   
          11.     <servlet-mapping>  
          12.         <servlet-name>Uploadservlet-name>  
          13.         <url-pattern>/fileuploadurl-pattern>  
          14.     servlet-mapping>  
          15. web-app>  

          配置好servlet后,啟動tomcat,寫一個簡單的jsp測試:

          jsp 代碼
          1. &lt;form action="fileupload" method="post" enctype="multipart/form-data" name="form1">   
          2.   &lt;input type="file" name="file" />   
          3.   &lt;input type="submit" name="submit" value="上傳" />   
          4. &lt;/form>  

          注意:action="fileupload"其中fileupload是配置servlet時指定的url-pattern。

          posted on 2008-05-29 14:03 ???MengChuChen 閱讀(364) 評論(0)  編輯  收藏 所屬分類: JAVAEE
          主站蜘蛛池模板: 武定县| 读书| 溧水县| 密山市| 武定县| 泌阳县| 沾化县| 吴旗县| 遂宁市| 和林格尔县| 广丰县| 云龙县| 西乌| 天津市| 青冈县| 依安县| 南召县| 子洲县| 攀枝花市| 邯郸市| 华池县| 甘泉县| 原阳县| 民县| 沙河市| 南岸区| 太仆寺旗| 武乡县| 札达县| 灌阳县| 富锦市| 普定县| 阿荣旗| 慈利县| 锦州市| 合江县| 商河县| 和龙市| 池州市| 毕节市| 青海省|