posts - 0,  comments - 6,  trackbacks - 0

          文件上傳范例

          本文采用MyEclipse IDE8.5版)作為開發工具,Apache Tomcat 6.0.18作為Servlet容器,使用谷歌瀏覽
          器進行示范。

          第一步:依次點擊  File——New —— Web Project,創建web工程,工程名在這里取名demo,其它默
          認。

          第二步:復制commons-fileupload-1.2.2.jarcommons-io-1.4.jar,在PackageExplorer(工程瀏覽器)中,
          將它們拷貝到
          WebRoot\WEB-INF\lib目錄下,MyEclipse會自動將其加入BuildPath

          第三步:在WebRoot目錄上單擊右鍵,然后依次單擊 New —— JSP,在WebRoot目錄下創建文件上
          傳表單頁面,取名
          simpleUpload.jsp,在body標簽內添加如下表單代碼:

          <form action="<%=request.getContextPath()%>/servlet/SimpleUpload" 
          enctype="multipart/form-data" method="post">

          文本1<input type="text" name="text1" value="文本1"><br>

          文件2<input type="text" name="text2" value="文本2"><br>

          文件1<input type="file" name="file1"><br>

          文件2<input type="file" name="file2"><br>

          文件2<input type="file" name="file3"><br>

          <input type="submit" value="開始上傳">

          </form>

          第四步:在src目錄上單擊右鍵,然后依次單擊 New —— Package,創建名為servletspackage

          第五步:在剛創建的 servlets 包上單擊右鍵,然后依次單擊 New —— Servlet,打開如下圖窗口:


          如圖,為name屬性輸入SimpleUpload,點選doPost方法,其它默認即可,單擊next按鈕打開如下圖窗口:


          單擊Finesh按鈕,將會創建servlets.SimpleUpload.java,并在WebRoot\WEB-INF\web.xml中添加如下代碼:

          <servlet>

              <servlet-name>SimpleUpload</servlet-name>

              <servlet-class>servlet.SimpleUpload</servlet-class>

          </servlet>

          <servlet-mapping>

              <servlet-name>SimpleUpload</servlet-name>

              <url-pattern>/servlet/SimpleUpload</url-pattern>

          </servlet-mapping>

          第六步:打開servlets.SimpleUpload.java,將doGet方法中自動生成的代碼修改如下:

          public class SimpleUpload extends HttpServlet {

          public void doPost(HttpServletRequest request, HttpServletResponse response)

          throws ServletException, IOException {

          PrintWriter out = response.getWriter();

          response.setContentType("text/html;charset=UTF-8");

          // 判斷是否多媒體文件上傳請求表單

          boolean isMultipart = ServletFileUpload.isMultipartContent(request);

          if (!isMultipart) {

          out.println("對不起,當前請求不是一個多媒體文件上傳請求!");

          return;

          }

          // 如果在應用根目錄下沒有用于存儲上傳文件的simpleUplaodDir目錄,創建該目錄

          String path = getServletContext().getRealPath("/simpleUploadDir");

          File uploadDir = new File(path);

          if (!uploadDir.exists())

          uploadDir.mkdir();

          DiskFileItemFactory factory = new DiskFileItemFactory();

          // 小于指定尺寸(默認10KB)的文件直接保存在內存中,否則保存在磁盤臨時文件夾

          factory.setSizeThreshold(1024 * 50);

          // 設置處理上傳文件時保存臨時文件的臨時文件夾,沒有指定則采用系統默認臨時文件夾

          File tempDir = new File(getServletContext().getRealPath("/temp"));

          if (!tempDir.exists())

          tempDir.mkdir();

          factory.setRepository(tempDir);

          ServletFileUpload uploader = new ServletFileUpload(factory);

          // 設置單個上傳文件的最大尺寸限制,參數為以字節為單位的long型數字

          uploader.setFileSizeMax(50 * 1024);

          // 設置整個請求上傳數據的最大尺寸限制,參數為以字節為單位的long型數字

          uploader.setSizeMax(50 * 1024 * 3);

          // 設置字符編碼

          uploader.setHeaderEncoding("UTF-8");

          // 解析請求

          List<FileItem> list = null;

          try {

          list = uploader.parseRequest(request);

          catch (FileUploadBase.FileSizeLimitExceededException e) {

          // 注意,1.2.1版本沒有getFieldNamegetFileName方法

          out.print("請求被拒絕,因為表單域" + e.getFieldName() + "上傳的文件"

          + e.getFileName() + "的大小(" + e.getActualSize()

          ")超出了單個文件限制的最大尺寸(" + e.getPermittedSize() + "");

          return;

          catch (FileUploadBase.SizeLimitExceededException e) {

          out.print("請求被拒絕,因為請求消息體的尺寸(" + e.getActualSize() + ")超出了限制的最大尺寸("

          + e.getPermittedSize() + "");

          return;

          catch (FileUploadException e1) {

          out.print(e1.getMessage());

          return;

          }

          // 循環處理每一個文件項

          for (FileItem item : list) {

          out.print("表單域名:" + item.getFieldName());

          if (item.isFormField()) {

          // 處理普通表單域,假設jsp頁面設置字符編碼也是UTF-8

          out.print("  表單域值:" + item.getString("UTF-8") + "<br/>");

          else {

          // 將臨時文件保存到指定目錄

          out.print("  文件名稱:" + item.getName() + "<br/>");

          String fileName = item.getName();

          String filepath = uploadDir.getAbsolutePath() + "/" + fileName;

          try {

          item.write(new File(filepath));

          catch (Exception e) {

          out.print(e.getMessage());

          return;

          }

          out.print("<img src=\"" + request.getContextPath()

          "/simpleUploadDir/" + fileName + "\" />" + "<br/>");

          }

          }

          out.flush();

          out.close();

          }

          }

          demo工程發布到tomcat下,在瀏覽器地址欄鍵入如下地址打開文件上傳表單頁面:

          http://127.0.0.1:8080/demo/simpleUpload.jsp


          填寫表單,單擊開始上傳按鈕,正常情況下顯示結果如圖:



          鄭州蜂鳥科技有限公司 申林 QQ:38185398  鄭州軟件開發興趣小組群:38236716

          學軟件開發,到蜂鳥科技!超強的師資力量 、完善的課程體系 、超低的培訓價格 、真實的企業項目。

          地址:鄭州市文化路豐產路口東50米豐產路21號SOHO世紀城西塔20樓F
          電話:0371-63839606  手機:13838505572(申老師) 13673990036 (許老師)
          QQ: 1073422643  1群:47614738 2群:108157678 
          網址:www.ntcsoft.com

          posted on 2010-09-03 23:53 whistler 閱讀(954) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          留言簿(2)

          我參與的團隊

          文章檔案(22)

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 尉氏县| 平阴县| 红河县| 汽车| 思茅市| 香河县| 赤壁市| 德昌县| 嘉义县| 江口县| 堆龙德庆县| 游戏| 新宾| 舟曲县| 衡东县| 湖北省| 呼玛县| 北安市| 白水县| 定远县| 灌阳县| 昌平区| 会同县| 富宁县| 锡林浩特市| 衢州市| 陆良县| 和政县| 安泽县| 南京市| 龙游县| 荣成市| 新津县| 邮箱| 南陵县| 新乐市| 房产| 横山县| 宁远县| 天长市| 尼木县|