隨筆 - 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 閱讀(1556) 評論(0)  編輯  收藏 所屬分類: 輕量級框架學習java web


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


          網站導航:
           
          主站蜘蛛池模板: 古丈县| 额济纳旗| 古田县| 深水埗区| 天津市| 正安县| 宁晋县| 公安县| 株洲市| 巴里| 海阳市| 梁山县| 周至县| 景宁| 宁蒗| 绥德县| 湘阴县| 明水县| 江城| 韶关市| 黑龙江省| 西吉县| 武强县| 扶绥县| 武川县| 梅州市| 宝坻区| 尉氏县| 大荔县| 孝义市| 定南县| 理塘县| 武山县| 霍林郭勒市| 梁平县| 永仁县| 广南县| 祥云县| 桐梓县| 若尔盖县| 永州市|