tbwshc

          總結一下今天使用fileupload組件通過Servelt上傳文件出現的幾個小問題

          這段時間由于要要成一個項目中的一個小功能,使用到文件的上傳和下載,以前學習過一點,不過沒有深入學習,今天看了“風中葉”張龍老師講解的通過Servletb上傳文件,跟著他將的內容,回顧手敲了那些代碼,不過出現了幾個小問題;
          1、把上傳的文件寫入到指定目錄的時候,出現了磁盤拒絕訪問的問題。
                解決:根據mark的回復,試了下,分析出現的原因:
                          item.write(new File(path));                 //原來只寫入到目錄,沒有指定寫入的是哪個文件
                          item.write(new File(path,fileName));     //修改后,指定寫入的是fileName這個文件
           
          2、上傳文件出現中文亂碼的問題:
                由于jsp文件默認的編碼是UTF-8,所以上產出現中文名稱的文件時,會出現中文亂碼。
                這個問題在網上找到解決的途徑:http://www.aygfsteel.com/duduli/archive/2008/11/11/239845.html
              解決思路:
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    upload.setHeaderEncoding("UTF-8");
               只需要通過ServeltFileUpload指定編碼即可
           
          3、關于“Apache FileUpload文件上傳組件API解析”可以在這里查看到:http://ajava.org/blog-273-584.html
                FileUpload 相關的 API詳解。
           
          以下是今天寫的Servelt類,完成的功能:文件上傳
          package com.way.fileupload.servlet;
          import java.io.File;
          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.List;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.commons.fileupload.FileItem;
          import org.apache.commons.fileupload.disk.DiskFileItemFactory;
          import org.apache.commons.fileupload.servlet.ServletFileUpload;
          public class FileUploadServelt extends HttpServlet {
                  public void doGet(HttpServletRequest request, HttpServletResponse response)
                                  throws ServletException, IOException {
                         
                          this.doPost(request, response);
                  }
                 
                  public void doPost(HttpServletRequest request, HttpServletResponse response)
                                  throws ServletException, IOException {
                                 
                                  DiskFileItemFactory factory = new DiskFileItemFactory();
                                 
                                  //String path = request.getRealPath("/UploadFiles");
                                  String path = "D:" + File.separator+ "upload" + File.separator;
                                 
                                  factory.setSizeThreshold(1024*1024);
                                 
                                  ServletFileUpload upload = new ServletFileUpload(factory);
                                  upload.setHeaderEncoding("UTF-8");
                                  try {
                                          List<FileItem> list = upload.parseRequest(request);
                                         
                                          for(FileItem item : list){
                                                 
                                                  String name = item.getFieldName();
                                                 
                                                  if(item.isFormField()){
                                                         
                                                          String value = item.getString("UTF-8");
                                                         
                                                          ///System.out.println("name:" + name + "  value:" + value);
                                                         
                                                          request.setAttribute(name, value);
                                                  }else{
                                                         
                                                          String value = item.getName();
                                                         
                                                          int start = value.lastIndexOf("\\");
                                                         
                                                          String fileName = value.substring(start + 1);
                                                          //String fileName = new String(file.getBytes("ISO-8859-1"),"UTF-8");
                                                          request.setAttribute(name, fileName);
                                                          //StringBuffer sb = new StringBuffer();
                                                          //sb.append(path);
                                                          //sb.append(fileName);
                                                          item.write(new File(path,fileName));
                                                  }
                                          }
                                  } catch (Exception e) {
                                          e.printStackTrace();
                                  }
                                 
                                  request.getRequestDispatcher("filetbUploadSuccess.jsp").forward(request, response);
                  }
                 
          }

          posted on 2012-06-28 13:24 chen11-1 閱讀(1193) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 自治县| 郑州市| 阿尔山市| 横峰县| 昌乐县| 建阳市| 凤庆县| 东乌| 五大连池市| 兰溪市| 秦安县| 巢湖市| 徐汇区| 萍乡市| 东山县| 阳朔县| 剑河县| 南雄市| 宜春市| 楚雄市| 许昌县| 杨浦区| 剑阁县| 潜江市| 喀喇沁旗| 昌平区| 靖西县| 巴彦县| 东莞市| 农安县| 榆树市| 金乡县| 陇西县| 颍上县| 台南市| 武川县| 兴宁市| 景谷| 扎赉特旗| 崇义县| 彰武县|