隨筆 - 45, 文章 - 2, 評(píng)論 - 11, 引用 - 0
          數(shù)據(jù)加載中……

          commons-FileUpload上傳過程

          1、

          ServletFileUpload.isMultipartContent(request)

          檢測(cè)request中是否包含有multipart內(nèi)容

          2、如果有,生成DiskFileItemFactory工廠將進(jìn)行相關(guān)的設(shè)置

                   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工廠傳給它,并對(duì)ServletFileUpload進(jìn)行配置

                 // 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接口是對(duì)用戶上傳文件的封裝

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

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

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 荥阳市| 枞阳县| 广饶县| 齐齐哈尔市| 轮台县| 崇左市| 南投市| 敦煌市| 齐河县| 济阳县| 招远市| 忻州市| 东城区| 伊通| 阳春市| 海盐县| 天气| 荔浦县| 南开区| 兴山县| 望奎县| 彭山县| 凤阳县| 沙湾县| 新宁县| 博客| 巨野县| 芦山县| 收藏| 嘉义县| 冀州市| 霍林郭勒市| 凤翔县| 海林市| 永丰县| 文登市| 张家港市| 成武县| 丹东市| 西峡县| 鹰潭市|