List of usage examples for org.apache.commons.fileupload FileItem isFormField
boolean isFormField();
FileItem
instance represents a simple form field. From source file:cc.kune.core.server.manager.file.FileUploadManagerAbstract.java
@Override @SuppressWarnings({ "rawtypes" }) protected void doPost(final HttpServletRequest req, final HttpServletResponse response) throws ServletException, IOException { beforePostStart();/*w w w.ja va 2 s .c o m*/ final DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() factory.setRepository(new File("/tmp")); if (!ServletFileUpload.isMultipartContent(req)) { LOG.warn("Not a multipart upload"); } final ServletFileUpload upload = new ServletFileUpload(factory); // maximum size before a FileUploadException will be thrown upload.setSizeMax(kuneProperties.getLong(KuneProperties.UPLOAD_MAX_FILE_SIZE) * 1024 * 1024); try { final List fileItems = upload.parseRequest(req); String userHash = null; StateToken stateToken = null; String typeId = null; String fileName = null; FileItem file = null; for (final Iterator iterator = fileItems.iterator(); iterator.hasNext();) { final FileItem item = (FileItem) iterator.next(); if (item.isFormField()) { final String name = item.getFieldName(); final String value = item.getString(); LOG.info("name: " + name + " value: " + value); if (name.equals(FileConstants.HASH)) { userHash = value; } if (name.equals(FileConstants.TOKEN)) { stateToken = new StateToken(value); } if (name.equals(FileConstants.TYPE_ID)) { typeId = value; } } else { fileName = item.getName(); LOG.info("file: " + fileName + " fieldName: " + item.getFieldName() + " size: " + item.getSize() + " typeId: " + typeId); file = item; } } createUploadedFile(userHash, stateToken, fileName, file, typeId); onSuccess(response); } catch (final FileUploadException e) { onFileUploadException(response); } catch (final Exception e) { onOtherException(response, e); } }
From source file:ba.nwt.ministarstvo.server.fileUpload.FileUploadServlet.java
@SuppressWarnings("unchecked") @Override/*from www . j a va 2 s.c om*/ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { ServletRequestContext ctx = new ServletRequestContext(request); if (ServletFileUpload.isMultipartContent(ctx) == false) { sendResponse(response, new FormResponse(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "The servlet can only handle multipart requests." + " This is probably a software bug.")); return; } // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // Parse the request List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> i = items.iterator(); HashMap<String, String> params = new HashMap<String, String>(); HashMap<String, File> files = new HashMap<String, File>(); while (i.hasNext() == true) { FileItem item = i.next(); if (item.isFormField() == true) { String param = item.getFieldName(); String value = item.getString(); // System.out.println(getClass().getName() + ": param=" // + param + ", value=" + value); params.put(param, value); } else { if (item.getSize() == 0) { continue; // ignore zero-length files } File tempf = File.createTempFile(request.getRemoteAddr() + "-" + item.getFieldName() + "-", ""); item.write(tempf); files.put(item.getFieldName(), tempf); // System.out.println("Creating temporary file " // + tempf.getAbsolutePath()); } } // populate, invoke the listener, delete files if needed, // send response FileUploadAction action = (FileUploadAction) actionClass.newInstance(); BeanUtils.populate(action, params); // populate the object action.setFileList(files); FormResponse resp = action.onSubmit(this, request); if (resp.isDeleteFiles()) { Iterator<Map.Entry<String, File>> j = files.entrySet().iterator(); while (j.hasNext()) { Map.Entry<String, File> entry = j.next(); File f = entry.getValue(); f.delete(); } } sendResponse(response, resp); return; } catch (Exception e) { e.printStackTrace(); sendResponse(response, new FormResponse(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getClass().getName() + ": " + e.getMessage())); } }
From source file:br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.java
public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException { logger.info("Request contains multipart data. Try to parse with commons-upload."); FileItemFactory factory = createFactoryForDiskBasedFileItems(config.getDirectory()); ServletFileUpload uploader = fileUploadCreator.create(factory); uploader.setSizeMax(config.getSizeLimit()); try {// ww w . ja v a2 s .c o m final List<FileItem> items = uploader.parseRequest(request); logger.debug("Found {} attributes in the multipart form submission. Parsing them.", items.size()); final Multimap<String, String> params = LinkedListMultimap.create(); for (FileItem item : items) { String name = item.getFieldName(); name = fixIndexedParameters(name); if (item.isFormField()) { logger.debug("{} is a field", name); params.put(name, getValue(item)); } else if (isNotEmpty(item)) { logger.debug("{} is a file", name); processFile(item, name); } else { logger.debug("A file field was empty: {}", item.getFieldName()); } } for (String paramName : params.keySet()) { Collection<String> paramValues = params.get(paramName); parameters.setParameter(paramName, paramValues.toArray(new String[paramValues.size()])); } } catch (final SizeLimitExceededException e) { reportSizeLimitExceeded(e); } catch (FileUploadException e) { logger.warn("There was some problem parsing this multipart request, " + "or someone is not sending a RFC1867 compatible multipart request.", e); } stack.next(method, instance); }
From source file:cust_photo_upload.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods./*w w w . j a v a 2 s. co m*/ * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); HttpSession hs = request.getSession(); try (PrintWriter out = response.getWriter()) { Login ln = (Login) hs.getAttribute("user"); String pname = ln.getUName(); String p = ""; // // creates FileItem instances which keep their content in a temporary file on disk FileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); //get the list of all fields from request List<FileItem> fields = upload.parseRequest(request); // iterates the object of list Iterator<FileItem> it = fields.iterator(); //getting objects one by one while (it.hasNext()) { //assigning coming object if list to object of FileItem FileItem fileItem = it.next(); //check whether field is form field or not boolean isFormField = fileItem.isFormField(); if (isFormField) { //get the filed name String fieldName = fileItem.getFieldName(); } else { String extension; String fieldName = fileItem.getFieldName(); if (fieldName.equals("photo")) ; { //getting name of file p = new File(fileItem.getName()).getName(); //get the extension of file by diving name into substring extension = p.substring(p.indexOf(".") + 1, p.length()); ; //rename file...concate name and extension p = pname + "." + extension; try { String filePath = this.getServletContext().getRealPath("/images") + "\\"; fileItem.write(new File(filePath + p)); } catch (Exception ex) { out.println(ex.toString()); } } } } // hs.setAttribute("photo", photo); // SessionFactory sf=NewHibernateUtil.getSessionFactory(); // Session s=sf.openSession(); // Transaction t=s.beginTransaction(); // Imagedata im=new Imagedata(); // im.setIname(pname); // im.setIurl(photo); // s.save(im); // t.commit(); // RequestDispatcher rd = request.getRequestDispatcher("viewserv"); rd.forward(request, response); // response.sendRedirect("viewserv"); } catch (Exception ex) { out.println(ex.getMessage()); } }
From source file:com.mycom.products.mywebsite.backend.util.UploadHandler.java
@Override @ResponseBody//w ww . ja va 2 s . com @RequestMapping(method = RequestMethod.POST) protected final void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { ServletFileUpload uploadHandler = new ServletFileUpload(new DiskFileItemFactory()); PrintWriter writer = response.getWriter(); // checks if the request actually contains upload file if (!ServletFileUpload.isMultipartContent(request)) { // if not, we stop here writer.println("Error: Form must has enctype=multipart/form-data."); writer.flush(); return; } JSONObject json = new JSONObject(); SimpleDateFormat fmtYMD = new SimpleDateFormat("/" + "yyyyMMdd"); Date today = new Date(); String uploadPath = EntryPoint.getUploadPath() + "/"; try { List<FileItem> items = uploadHandler.parseRequest(request); if (items != null && items.size() > 0) { String saveDir = "", fileCategory = ""; for (FileItem item : items) { if (item.isFormField()) { fileCategory = item.getString(); } } saveDir = fileCategory + fmtYMD.format(today); // creates the directory if it does not exist File uploadDir = new File(uploadPath + saveDir); if (!uploadDir.exists()) { uploadDir.mkdirs(); } List<HashMap<String, String>> uploadFiles = new ArrayList<>(); for (FileItem item : items) { // processes only fields that are not form fields if (!item.isFormField()) { if (saveDir.length() == 0) { json.put("messageCode", "V1001"); json.put("messageParams", "File upload type"); json.put("status", HttpStatus.BAD_REQUEST); response.setContentType("application/json"); writer.write(json.toString()); writer.flush(); } String originalFileName = "", saveFileName = "", format = "", fileSize = ""; // set the default format to png when it is profileImage if (fileCategory.equals("profilePicture")) { format = ".png"; } // can't predict fileName and format would be included. // For instance, blob won't be. try { originalFileName = item.getName().substring(0, item.getName().lastIndexOf(".")); } catch (Exception e) { // Nothing to do. Skip } try { format = item.getName().substring(item.getName().lastIndexOf("."), item.getName().length()); } catch (Exception e) { // Nothing to do. Skip } fileSize = getReadableFileSize(item.getSize()); UUID uuid = UUID.randomUUID(); saveFileName = new File(uuid.toString() + format).getName(); String filePath = uploadPath + saveDir + "/" + saveFileName; if (fileCategory.equals("profilePicture")) { saveProfileImage(item, filePath); } // Time to save in DB LoggedUserBean loginUser; Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof LoggedUserBean) { loginUser = (LoggedUserBean) principal; } else { throw new SecurityException("Unauthorize File Upload process was attempted."); } StaticContentBean content = new StaticContentBean(); content.setFileName(originalFileName + format); content.setFilePath(filePath); content.setFileSize(fileSize); content.setFileType(FileType.valueOf(getFileType(format))); long lastInsertedId = contentService.insert(content, loginUser.getId()); // else .... other file types go here HashMap<String, String> fileItem = new HashMap<>(); fileItem.put("contentId", "" + lastInsertedId); uploadFiles.add(fileItem); } } json.put("uploadFiles", uploadFiles); json.put("status", HttpStatus.OK); response.setContentType("application/json"); writer.write(json.toString()); writer.flush(); } } catch (FileUploadException e) { throw new RuntimeException("File upload Error !", e); } catch (Exception e) { throw new RuntimeException("File upload Error !", e); } finally { writer.close(); } }
From source file:it.vige.greenarea.sgrl.servlet.CommonsFileUploadServlet.java
protected void workingdoPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); response.setContentType("text/plain"); out.println("<h1>Servlet File Upload Example using Commons File Upload</h1>"); out.println();/*from w w w. j a va2s . c o m*/ DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); /* * Set the size threshold, above which content will be stored on disk. */ fileItemFactory.setSizeThreshold(1 * 1024 * 1024); // 1 MB /* * Set the temporary directory to store the uploaded files of size above * threshold. */ fileItemFactory.setRepository(tmpDir); ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory); try { /* * Parse the request */ List<FileItem> items = uploadHandler.parseRequest(request); Iterator<FileItem> itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); /* * Handle Form Fields. */ if (item.isFormField()) { out.println("File Name = " + item.getFieldName() + ", Value = " + item.getString()); } else { // Handle Uploaded files. out.println("Field Name = " + item.getFieldName() + ", File Name = " + item.getName() + ", Content type = " + item.getContentType() + ", File Size = " + item.getSize()); /* * Write file to the ultimate location. */ File file = new File(destinationDir, "LogisticNetwork.mxe"); item.write(file); } out.close(); } } catch (FileUploadException ex) { log("Error encountered while parsing the request", ex); } catch (Exception ex) { log("Error encountered while uploading file", ex); } }
From source file:application.controllers.admin.EmotionList.java
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //upload image to browser for add emotions //upload image to browser for add emotions if (!ServletFileUpload.isMultipartContent(request)) { PrintWriter writer = response.getWriter(); writer.println("Request does not contain upload data"); writer.flush();// w w w. j a va 2 s . c o m return; } // configures upload settings DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(UploadConstant.THRESHOLD_SIZE); // Location to save data that is larger than maxMemSize. factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setFileSizeMax(UploadConstant.MAX_FILE_SIZE); upload.setSizeMax(UploadConstant.MAX_REQUEST_SIZE); // constructs the directory path to store upload file // String uploadPath = Registry.get("Host") +"/emotions-image/"+ UPLOAD_DIRECTORY; String uploadPath = Registry.get("imageHost") + "/emotions-image/" + UploadConstant.UPLOAD_DIRECTORY; // creates the directory if it does not exist File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } //list image user upload String[] arrLinkImage = null; try { int indexImage = 0; // parses the request's content to extract file data List formItems = upload.parseRequest(request); arrLinkImage = new String[formItems.size()]; Iterator iter = formItems.iterator(); // iterates over form's fields while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); // processes only fields that are not form fields if (!item.isFormField()) { String fileName = new File(item.getName()).getName(); String extensionImage = ""; for (int i = fileName.length() - 1; i >= 0; i--) { if (fileName.charAt(i) == '.') { break; } else { extensionImage = fileName.charAt(i) + extensionImage; } } String filePath = uploadPath + File.separator + fileName; File storeFile = new File(filePath); String contentType = item.getContentType(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); String fieldName = item.getFieldName(); // saves the file on disk item.write(storeFile); arrLinkImage[indexImage++] = item.getName(); } } } catch (Exception ex) { request.setAttribute("message", "There was an error: " + ex.getMessage()); } // request.setAttribute("arrLinkImage", arrLinkImage); // RequestDispatcher rd = request.getRequestDispatcher("/groupEmotion/emotion/add"); // rd.forward(request, response); // String sessionId = request.getAttribute("sessionIdAdmin").toString(); String sessionId = request.getSession().toString(); String groupId = request.getParameter("groupId"); Memcached.set("arrLinkImage-" + sessionId, 3600, arrLinkImage); response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); response.setHeader("Location", Registry.get("Host") + "/groupEmotion/emotion/add?groupId=" + groupId); response.setContentType("text/html"); }
From source file:com.silverpeas.importExportPeas.servlets.ImportDragAndDrop.java
@Override public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { SilverTrace.info("importExportPeas", "ImportDragAndDrop.doPost", "root.MSG_GEN_ENTER_METHOD"); HttpRequest request = HttpRequest.decorate(req); request.setCharacterEncoding("UTF-8"); if (!request.isContentInMultipart()) { res.getOutputStream().println("SUCCESS"); return;/*from ww w . ja v a2s . co m*/ } String userLanguage = null; StringBuilder result = new StringBuilder(); try { String componentId = request.getParameter("ComponentId"); String topicId = request.getParameter("TopicId"); if (!StringUtil.isDefined(topicId)) { String sessionId = request.getParameter("SessionId"); SessionManagementFactory factory = SessionManagementFactory.getFactory(); SessionManagement sessionManagement = factory.getSessionManagement(); SessionInfo session = sessionManagement.getSessionInfo(sessionId); topicId = session.getAttribute("Silverpeas_DragAndDrop_TopicId"); } String userId = request.getParameter("UserId"); userLanguage = StringUtil.isNotDefined(userId) ? I18NHelper.defaultLanguage : UserDetail.getById(userId).getUserPreferences().getLanguage(); boolean ignoreFolders = StringUtil.getBooleanValue(request.getParameter("IgnoreFolders")); boolean draftUsed = StringUtil.getBooleanValue(request.getParameter("Draft")); SilverTrace.info("importExportPeas", "Drop", "root.MSG_GEN_PARAM_VALUE", "componentId = " + componentId + " topicId = " + topicId + " userId = " + userId + " ignoreFolders = " + ignoreFolders + ", draftUsed = " + draftUsed); String savePath = FileRepositoryManager.getTemporaryPath() + "tmpupload" + File.separator + topicId + System.currentTimeMillis() + File.separator; List<FileItem> items = request.getFileItems(); for (FileItem item : items) { if (!item.isFormField()) { String fileUploadId = item.getFieldName().substring(4); String parentPath = FileUploadUtil.getParameter(items, "relpathinfo" + fileUploadId, null); String fileName = FileUploadUtil.getFileName(item); if (StringUtil.isDefined(parentPath)) { if (parentPath.endsWith(":\\")) { // special case for file on root of disk parentPath = parentPath.substring(0, parentPath.indexOf(':') + 1); } } parentPath = FileUtil.convertPathToServerOS(parentPath); SilverTrace.info("importExportPeas", "Drop.doPost", "root.MSG_GEN_PARAM_VALUE", "fileName = " + fileName); if (fileName != null) { if (fileName.contains(File.separator)) { fileName = fileName.substring(fileName.lastIndexOf(File.separatorChar)); parentPath = parentPath + File.separatorChar + fileName.substring(0, fileName.lastIndexOf(File.separatorChar)); } SilverTrace.info("importExportPeas", "Drop.doPost", "root.MSG_GEN_PARAM_VALUE", "fileName on Unix = " + fileName); } if (!ignoreFolders) { if (parentPath != null && parentPath.length() > 0) { result.append("newFolder=true&"); fileName = File.separatorChar + parentPath + File.separatorChar + fileName; } } if (!"".equals(savePath)) { File f = new File(savePath + fileName); File parent = f.getParentFile(); if (!parent.exists()) { parent.mkdirs(); } item.write(f); } } else { SilverTrace.info("importExportPeas", "Drop.doPost", "root.MSG_GEN_PARAM_VALUE", "item = " + item.getFieldName() + " - " + item.getString()); } } MassiveReport massiveReport = new MassiveReport(); UserDetail userDetail = OrganisationControllerFactory.getOrganisationController().getUserDetail(userId); try { MassiveDocumentImport massiveImporter = new MassiveDocumentImport(); ImportSettings settings = new ImportSettings(savePath, userDetail, componentId, topicId, draftUsed, true, ImportSettings.FROM_DRAGNDROP); ImportReport importReport = massiveImporter.importDocuments(settings, massiveReport); if (isDefaultClassificationModifiable(topicId, componentId)) { ComponentReport componentReport = importReport.getListComponentReport().get(0); List<MassiveReport> listMassiveReport = componentReport.getListMassiveReports(); for (MassiveReport theMassiveReport : listMassiveReport) { List<UnitReport> listMassiveUnitReport = theMassiveReport.getListUnitReports(); for (UnitReport unitReport : listMassiveUnitReport) { if (unitReport.getStatus() == UnitReport.STATUS_PUBLICATION_CREATED) { result.append("pubid=").append(unitReport.getLabel()).append("&"); } } } } } catch (ImportExportException ex) { massiveReport.setError(UnitReport.ERROR_NOT_EXISTS_OR_INACCESSIBLE_DIRECTORY); SilverpeasTransverseErrorUtil.throwTransverseErrorIfAny(ex, userLanguage); res.getOutputStream().println("ERROR"); return; } } catch (Exception e) { SilverTrace.debug("importExportPeas", "Drop.doPost", "root.MSG_GEN_PARAM_VALUE", e); final StringBuilder sb = new StringBuilder("ERROR: "); String transverseMessage = SilverpeasTransverseWebErrorUtil.performAppletAlertExceptionMessage(e, userLanguage); if (isDefined(transverseMessage)) { sb.append(transverseMessage); } else { sb.append(e.getMessage()); } res.getOutputStream().println(sb.toString()); return; } if (result.length() > 0) { res.getOutputStream().println(result.substring(0, result.length() - 1)); } else { res.getOutputStream().println("SUCCESS"); } }
From source file:cn.itcast.fredck.FCKeditor.uploader.SimpleUploaderServlet.java
/** * Manage the Upload requests.<br> * * The servlet accepts commands sent in the following format:<br> * simpleUploader?Type=ResourceType<br><br> * It store the file (renaming it in case a file with the same name exists) and then return an HTML file * with a javascript command in it./*from w ww. ja va 2s .com*/ * */ @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (debug) System.out.println("--- BEGIN DOPOST ---"); response.setContentType("text/html; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); String typeStr = request.getParameter("Type"); String currentPath = baseDir + typeStr; String currentDirPath = getServletContext().getRealPath(currentPath); currentPath = request.getContextPath() + currentPath; if (debug) System.out.println(currentDirPath); String retVal = "0"; String newName = ""; String fileUrl = ""; String errorMessage = ""; if (enabled) { DiskFileUpload upload = new DiskFileUpload(); try { List items = upload.parseRequest(request); Map fields = new HashMap(); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) fields.put(item.getFieldName(), item.getString()); else fields.put(item.getFieldName(), item); } FileItem uplFile = (FileItem) fields.get("NewFile"); String fileNameLong = uplFile.getName(); fileNameLong = fileNameLong.replace('\\', '/'); String[] pathParts = fileNameLong.split("/"); String fileName = pathParts[pathParts.length - 1]; String nameWithoutExt = getNameWithoutExtension(fileName); String ext = getExtension(fileName); File pathToSave = new File(currentDirPath, fileName); fileUrl = currentPath + "/" + fileName; if (extIsAllowed(typeStr, ext)) { int counter = 1; while (pathToSave.exists()) { newName = nameWithoutExt + "(" + counter + ")" + "." + ext; fileUrl = currentPath + "/" + newName; retVal = "201"; pathToSave = new File(currentDirPath, newName); counter++; } uplFile.write(pathToSave); } else { retVal = "202"; errorMessage = ""; if (debug) System.out.println("Invalid file type: " + ext); } } catch (Exception ex) { if (debug) ex.printStackTrace(); retVal = "203"; } } else { retVal = "1"; errorMessage = "This file uploader is disabled. Please check the WEB-INF/web.xml file"; } out.println("<script type=\"text/javascript\">"); out.println("window.parent.OnUploadCompleted(" + retVal + ",'" + fileUrl + "','" + newName + "','" + errorMessage + "');"); out.println("</script>"); out.flush(); out.close(); if (debug) System.out.println("--- END DOPOST ---"); }
From source file:cn.clxy.studio.common.web.multipart.GFileUploadSupport.java
/** * Parse the given List of Commons FileItems into a Spring MultipartParsingResult, containing Spring MultipartFile * instances and a Map of multipart parameter. * * @param fileItems the Commons FileIterms to parse * @param encoding the encoding to use for form fields * @return the Spring MultipartParsingResult * @see GMultipartFile#CommonsMultipartFile(org.apache.commons.fileupload.FileItem) *///from www . ja va2s .c om protected MultipartParsingResult parseFileItems(List<FileItem> fileItems, String encoding) { MultiValueMap<String, MultipartFile> multipartFiles = new LinkedMultiValueMap<String, MultipartFile>(); Map<String, String[]> multipartParameters = new HashMap<String, String[]>(); Map<String, String> multipartParameterContentTypes = new HashMap<String, String>(); // Extract multipart files and multipart parameters. for (FileItem fileItem : fileItems) { if (fileItem.isFormField()) { String value = null; if (encoding != null) { try { value = fileItem.getString(encoding); } catch (UnsupportedEncodingException ex) { if (logger.isWarnEnabled()) { logger.warn("Could not decode multipart item '" + fileItem.getFieldName() + "' with encoding '" + encoding + "': using platform default"); } value = fileItem.getString(); } } else { value = fileItem.getString(); } String[] curParam = multipartParameters.get(fileItem.getFieldName()); if (curParam == null) { // simple form field multipartParameters.put(fileItem.getFieldName(), new String[] { value }); } else { // array of simple form fields String[] newParam = StringUtils.addStringToArray(curParam, value); multipartParameters.put(fileItem.getFieldName(), newParam); } multipartParameterContentTypes.put(fileItem.getFieldName(), fileItem.getContentType()); } else { // multipart file field GMultipartFile file = new GMultipartFile(fileItem); multipartFiles.add(file.getName(), file); if (logger.isDebugEnabled()) { logger.debug("Found multipart file [" + file.getName() + "] of size " + file.getSize() + " bytes with original filename [" + file.getOriginalFilename() + "], stored " + file.getStorageDescription()); } } } return new MultipartParsingResult(multipartFiles, multipartParameters, multipartParameterContentTypes); }