// use prototype FileUpload instance if the request specifies // its own encoding that does not match the default encoding if (!enc.equals(this.defaultEncoding)) { fileUpload = new DiskFileUpload(); fileUpload.setSizeMax(this.fileUpload.getSizeMax()); fileUpload.setSizeThreshold(this.fileUpload.getSizeThreshold()); fileUpload.setRepositoryPath(this.fileUpload.getRepositoryPath()); fileUpload.setHeaderEncoding(enc); }
try { List fileItems = fileUpload.parseRequest(request); Map parameters = new HashMap(); Map multipartFiles = new HashMap(); for (Iterator it = fileItems.iterator(); it.hasNext();) { FileItem fileItem = (FileItem) it.next(); if (fileItem.isFormField()) { String value = null; try { value = fileItem.getString(enc); } catch (UnsupportedEncodingException ex) { logger.warn("Could not decode multipart item '" + fileItem.getFieldName() + "' with encoding '" + enc + "': using platform default"); value = fileItem.getString(); } String[] curParam = (String[]) parameters.get(fileItem.getFieldName()); if (curParam == null) { // simple form field parameters.put(fileItem.getFieldName(), new String[] { value }); } else { // array of simple form fields String[] newParam = StringUtils.addStringToArray(curParam, value); parameters.put(fileItem.getFieldName(), newParam); } } else { // multipart file field CommonsMultipartFile file = new CommonsMultipartFile(fileItem);