隨筆 - 45, 文章 - 2, 評論 - 11, 引用 - 0
          數據加載中……

          commons-FileUpload上傳過程

          1、

          ServletFileUpload.isMultipartContent(request)

          檢測request中是否包含有multipart內容

          2、如果有,生成DiskFileItemFactory工廠將進行相關的設置

                   DiskFileItemFactory factory = new DiskFileItemFactory();
                  // maximum size that will be stored in memory
                  factory.setSizeThreshold(maxMemSize);
                  // Location to save data that is larger than maxMemSize.
                  factory.setRepository(new File("d:/"));

          3、生成上傳ServletFileUpload類,并將DiskFileFactory工廠傳給它,并對ServletFileUpload進行配置

                 // Create a new file upload handler
                  ServletFileUpload upload = new ServletFileUpload(factory);
                  // maximum file size to be uploaded.
                  upload.setSizeMax(maxFileSize);

          4、從request得到上傳的文件列表

                      // Parse the request to get file items.
                      List fileItems = upload.parseRequest(request);

                      // Process the uploaded file items
                      Iterator i = fileItems.iterator();

          5、處理文件:寫入或者其他操作

          while (i.hasNext()) {
                          FileItem fi = (FileItem) i.next();
                          if (!fi.isFormField()) {
                              // Get the uploaded file parameters
                              String fieldName = fi.getFieldName();
                              String fileName = fi.getName();
                              String contentType = fi.getContentType();
                              boolean isInMemory = fi.isInMemory();
                              long sizeInBytes = fi.getSize();
                              // Write the file
                              if (fileName.lastIndexOf("\\") >= 0) {
                                  file = new File(
                                          filePath
                                                  + fileName.substring(fileName
                                                          .lastIndexOf("\\")));
                              } else {
                                  file = new File(
                                          filePath
                                                  + fileName.substring(fileName
                                                          .lastIndexOf("\\") + 1));
                              }
                              fi.write(file);
                              out.println("Uploaded Filename: " + fileName + "<br>");
                          }
                      }

          }

           

          說明:

          FileItem接口是對用戶上傳文件的封裝

          DiskFileItemFactory實現了FileItemFactory接口,主要方法有public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)

          ServletFileUpload從FileUpload繼承,而FileUpload又從FileUploadBase繼承,功能:分析傳入的request對象、得到文件列表FileItemIterator……

          posted on 2011-03-23 13:01 jack zhai 閱讀(1554) 評論(0)  編輯  收藏 所屬分類: 輕量級框架學習java web


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


          網站導航:
           
          主站蜘蛛池模板: 东台市| 罗江县| 建昌县| 汽车| 白沙| 马边| 吴忠市| 海原县| 宣汉县| 隆安县| 溧阳市| 休宁县| 宜君县| 封丘县| 乌鲁木齐县| 肇源县| 绥德县| 惠安县| 师宗县| 莱州市| 浪卡子县| 古田县| 五家渠市| 澄迈县| 华亭县| 高邑县| 乌兰浩特市| 海丰县| 江孜县| 乃东县| 苗栗县| 庆城县| 温泉县| 青海省| 景泰县| 炉霍县| 九江县| 镇原县| 长宁县| 双鸭山市| 磴口县|