List of usage examples for org.apache.commons.fileupload FileItemIterator hasNext
boolean hasNext() throws FileUploadException, IOException;
From source file:org.olat.core.gui.components.form.flexible.impl.Form.java
/** * Internal helper to initialize the request parameter map an to temporary store the uploaded files when a multipart request is used. The files are stored to a * temporary location and a filehandle is added to the requestMultipartFiles map for later retrieval by the responsible FormItem. * // w ww . j a v a2 s . co m * @param ureq */ private void doInitRequestParameterAndMulipartData(UserRequest ureq) { // First fill parameter map either from multipart data or standard http request if (isMultipartEnabled() && ServletFileUpload.isMultipartContent(ureq.getHttpReq())) { long uploadSize = -1; // default unlimited // Limit size of complete upload form: upload size limit + 500k for // other input fields if (multipartUploadMaxSizeKB > -1) { uploadSize = (multipartUploadMaxSizeKB * 1024l * 1024l) + 512000l; } // Create a new file upload handler, use commons fileupload streaming // API to save files right to the tmp location ServletFileUpload uploadParser = new ServletFileUpload(); uploadParser.setSizeMax(uploadSize); // Parse the request try { FileItemIterator iter = uploadParser.getItemIterator(ureq.getHttpReq()); while (iter.hasNext()) { FileItemStream item = iter.next(); String itemName = item.getFieldName(); InputStream itemStream = item.openStream(); if (item.isFormField()) { // Normal form item // analog to ureq.getParameter in non-multipart mode String value = Streams.asString(itemStream, "UTF-8"); addRequestParameter(itemName, value); } else { // File item, store it to temp location String fileName = item.getName(); // Cleanup IE filenames that are absolute int slashpos = fileName.lastIndexOf("/"); if (slashpos != -1) fileName = fileName.substring(slashpos + 1); slashpos = fileName.lastIndexOf("\\"); if (slashpos != -1) fileName = fileName.substring(slashpos + 1); File tmpFile = new File(System.getProperty("java.io.tmpdir") + File.separator + "upload-" + CodeHelper.getGlobalForeverUniqueID()); try { FileUtils.save(itemStream, tmpFile); // Only save non-empty file transfers, ignore empty transfers // (e.g. already submitted in a previous form submit, not an error!) // Removing empty file check for now ... was introduced to cope with // browser trouble which probably is not there any more ... // so empty fileName means nothing selected in the file element // if (tmpFile.length() > 0) { if (fileName.length() > 0) { // a file was selected // Save file and also original file name requestMultipartFiles.put(itemName, tmpFile); requestMultipartFileNames.put(itemName, fileName); requestMultipartFileMimeTypes.put(itemName, item.getContentType()); } else { if (tmpFile.exists()) tmpFile.delete(); } } catch (OLATRuntimeException e) { // Could not save stream for whatever reason, cleanup temp file and delegate exception if (tmpFile.exists()) tmpFile.delete(); if (e.getCause() instanceof MalformedStreamException) { logWarn("Could not read uploaded file >" + fileName + "< from stream. Possibly an attempt to upload a directory instead of a file (happens on Mac)", e); return; } throw new OLATRuntimeException("Could not save uploaded file", e); } } } } catch (SizeLimitExceededException sizeLimitExceededException) { logError("Error while dispatching multipart form: file limit (" + uploadSize + ") exceeded", sizeLimitExceededException); requestError = REQUEST_ERROR_UPLOAD_LIMIT_EXCEEDED; } catch (IOException e) { logWarn("Error while dispatching multipart form: ioexception", e); requestError = REQUEST_ERROR_GENERAL; } catch (Exception e) { logError("Error while dispatching multipart form: general exception", e); requestError = REQUEST_ERROR_GENERAL; } } else { // Get parameters the standard way logDebug("Dispatching non-multipart form", null); Set<String> keys = ureq.getParameterSet(); for (String key : keys) { String[] values = ureq.getHttpReq().getParameterValues(key); if (values != null) { requestParams.put(key, values); } else { addRequestParameter(key, ureq.getParameter(key)); } } } }
From source file:org.olat.restapi.support.MultipartReader.java
private final void apache(HttpServletRequest request, long uploadLimit) { ServletFileUpload uploadParser = new ServletFileUpload(); uploadParser.setSizeMax((uploadLimit * 1024l) + 512000l); // Parse the request try {// w w w . j av a 2 s .c om FileItemIterator iter = uploadParser.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); String itemName = item.getFieldName(); InputStream itemStream = item.openStream(); if (item.isFormField()) { String value = Streams.asString(itemStream, "UTF-8"); fields.put(itemName, value); } else { // File item, store it to temp location filename = item.getName(); contentType = item.getContentType(); if (filename != null) { filename = UUID.randomUUID().toString().replace("-", "") + "_" + filename; } else { filename = "upload-" + UUID.randomUUID().toString().replace("-", ""); } file = new File(WebappHelper.getTmpDir(), filename); try { save(itemStream, file); } catch (Exception e) { log.error("", e); } } } } catch (Exception e) { log.error("", e); } }
From source file:org.onecmdb.ui.gwt.desktop.server.command.ChangeUploadCommand.java
private void getFileItem(HttpServletRequest request) throws FileUploadException, IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { throw new IllegalArgumentException("Not multipart..."); }//from www .j a va2 s. c om ServletFileUpload upload = new ServletFileUpload(); List<String> mdrEntries = new ArrayList<String>(); // Parse the request FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected."); } else { System.out.println("File field " + name + " with file name " + item.getName() + " detected."); // Process the input stream } String mdrEntry = handleInput(name, stream); mdrEntries.add(mdrEntry); } commitContent(mdrEntries); }
From source file:org.onecmdb.ui.gwt.desktop.server.servlet.ContentServiceServlet.java
private void getFileItem(HttpServletRequest request, File root) throws FileUploadException, IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { throw new IllegalArgumentException("Not multipart..."); }/*from w w w.j av a 2 s . c om*/ ServletFileUpload upload = new ServletFileUpload(); // Parse the request FileItemIterator iter = upload.getItemIterator(request); String fileName = null; String path = null; while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); System.out.println("Name=" + item.getName()); if (item.isFormField()) { String value = Streams.asString(stream); System.out.println("FormField " + name + "=" + value); if (name.equals("name")) { fileName = value; } if (name.equals("path")) { path = value; } } else { System.out.println("File field " + name + " with file name " + item.getName() + " detected."); File output = new File(root, path + "/" + fileName); System.out.println("Write upload to " + output.getPath()); IOUtil.copyCompletely(stream, new FileOutputStream(output)); } } }
From source file:org.opendatakit.aggregate.parser.MultiPartFormData.java
/** * Construct a mult-part form data container by parsing a multi part form * request into a set of multipartformitems. The information are stored in * items and are indexed by either the field name or the file name (or both) * provided in the http submission/* www.j a v a 2s .c o m*/ * * @param req * an HTTP request from a multipart form * * @throws FileUploadException * @throws IOException */ public MultiPartFormData(HttpServletRequest req) throws FileUploadException, IOException { simpleFieldNameMap = new HashMap<String, String>(); fieldNameMap = new HashMap<String, MultiPartFormItem>(); fileNameMap = new HashMap<String, MultiPartFormItem>(); fileNameWithoutExtensionNameMap = new HashMap<String, MultiPartFormItem>(); ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); int size = req.getContentLength(); if (size > 0) { upload.setFileSizeMax(size); } else { upload.setFileSizeMax(ParserConsts.FILE_SIZE_MAX); } List<MultiPartFormItem> fileNameList = new ArrayList<MultiPartFormItem>(); FileItemIterator items = upload.getItemIterator(req); while (items.hasNext()) { FileItemStream item = items.next(); ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); BufferedInputStream formStream = new BufferedInputStream(item.openStream()); // TODO: determine ways to possibly improve efficiency int nextByte = formStream.read(); while (nextByte != -1) { byteStream.write(nextByte); nextByte = formStream.read(); } formStream.close(); if (item.isFormField()) { simpleFieldNameMap.put(item.getFieldName(), byteStream.toString()); } else { MultiPartFormItem data = new MultiPartFormItem(item.getFieldName(), item.getName(), item.getContentType(), byteStream); String fieldName = item.getFieldName(); if (fieldName != null) { fieldNameMap.put(fieldName, data); } String fileName = item.getName(); if (fileName != null && fileName.length() != 0) { fileNameList.add(data); } } } // Find the common prefix to the filenames being uploaded... // Deal with Windows backslash file separator... boolean first = true; String[] commonPath = null; int commonPrefix = 0; for (MultiPartFormItem e : fileNameList) { String fullFilePath = e.getFilename(); if (first) { commonPath = fullFilePath.split("[/\\\\]"); commonPrefix = commonPath.length - 1; // everything but // filename... first = false; } else { String[] path = fullFilePath.split("[/\\\\]"); int pathPrefix = path.length - 1; // everything but // filename... if (pathPrefix < commonPrefix) commonPrefix = pathPrefix; for (int i = 0; i < commonPrefix; ++i) { if (!commonPath[i].equals(path[i])) { commonPrefix = i; break; } } } } // and now go back through the attachments, adjusting the filename // and building the filename mapping. for (MultiPartFormItem e : fileNameList) { String fullFilePath = e.getFilename(); String[] filePath = fullFilePath.split("[/\\\\]"); StringBuilder b = new StringBuilder(); first = true; // start at the first entry after the common prefix... for (int i = commonPrefix; i < filePath.length; ++i) { if (!first) { b.append("/"); } first = false; b.append(filePath[i]); } // and construct the filename with common directory prefix // stripped. String fileName = b.toString(); e.setFilename(fileName); if (fileName != null) { // TODO: possible bug in ODK collect truncating file extension // may need to remove this code after ODK collect is fixed int indexOfExtension = fileName.lastIndexOf("."); if (indexOfExtension > 0) { fileNameWithoutExtensionNameMap.put(fileName.substring(0, indexOfExtension), e); } fileNameMap.put(fileName, e); } } }
From source file:org.openehealth.ipf.platform.camel.lbs.http.process.HttpResourceHandler.java
private ResourceList extractFromMultipart(String subUnit, HttpServletRequest request) throws Exception { ResourceList resources = new ResourceList(); ServletFileUpload upload = new ServletFileUpload(null); FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { extractFromSinglePart(subUnit, resources, iter); }/* w ww . j a v a 2 s . c om*/ return resources; }
From source file:org.operamasks.faces.render.widget.AjaxFileUploadRenderer.java
@SuppressWarnings("unchecked") private void processUploading(FacesContext context, UIComponent component) throws IOException, FileUploadException { UploadingMediator uploadingMediator = getUploadingMediator(); if (!uploadingMediator.canStartUploading(context)) { return;//from w ww . j ava 2s .co m } else { uploadingMediator.startUploading(context); } UIForm parentForm = getParentForm(component); ServletFileUpload upload = new ServletFileUpload(); upload.setProgressListener(new FileUploadProgressListener(context)); HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); InputStream input = null; try { FileItemIterator iter = upload.getItemIterator(request); int itemIndex = 0; while (iter.hasNext()) { FileItemStream item = iter.next(); UIFileUpload fileUpload = findFileUploadByFieldName(parentForm, item.getFieldName()); if (!item.isFormField() && isFieldRequired(fileUpload) && isFieldNull(item)) { throw new FacesException(getRequiredFacesMessage(context, fileUpload)); } if (!item.isFormField()) { FileUploadItem uploadItem = createFileUploadItem(item, ++itemIndex, fileUpload.getMaxSize()); if (fileUpload == null) throw new FacesException("Can't find corresponding UIFileUpload component for this field " + uploadItem.getFieldName()); input = openStream(item, fileUpload); if (fileUpload.getWriteTo() != null) { writeToFile(input, fileUpload.getWriteTo()); } else { fileUpload.getUploadListener().invoke(context.getELContext(), new Object[] { uploadItem }); consumeStream(input); } } else { // Only need process file uploading, so consume other form fields input = openStream(item, fileUpload); consumeStream(input); } } } catch (FileUploadException e) { throw e; } catch (IOException e) { throw e; } finally { if (input != null) input.close(); } }
From source file:org.oryxeditor.server.StencilSetExtensionGeneratorServlet.java
/** * Request parameters are documented in//from w ww . j a va 2 s . com * editor/test/examples/stencilset-extension-generator.xhtml * The parameter 'csvFile' is always required. * An example CSV file can be found in * editor/test/examples/design-thinking-example-data.csv * which has been exported using OpenOffice.org from * editor/test/examples/design-thinking-example-data.ods */ protected void doPost(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; this.baseUrl = Repository.getBaseUrl(request); this.repository = new Repository(baseUrl); // parameters and their default values String modelNamePrefix = "Generated Model using "; String stencilSetExtensionNamePrefix = StencilSetExtensionGenerator.DEFAULT_STENCIL_SET_EXTENSION_NAME_PREFIX; String baseStencilSetPath = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL_SET_PATH; String baseStencilSet = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL_SET; String baseStencil = StencilSetExtensionGenerator.DEFAULT_BASE_STENCIL; List<String> stencilSetExtensionUrls = new ArrayList<String>(); String[] columnPropertyMapping = null; String[] csvHeader = null; List<Map<String, String>> stencilPropertyMatrix = new ArrayList<Map<String, String>>(); String modelDescription = "The initial version of this model has been created by the Stencilset Extension Generator."; String additionalERDFContentForGeneratedModel = ""; String[] modelTags = null; // Check that we have a file upload request boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(); // Parse the request FileItemIterator iterator; try { iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { // ordinary form field String value = Streams.asString(stream); //System.out.println("Form field " + name + " with value " // + value + " detected."); if (name.equals("modelNamePrefix")) { modelNamePrefix = value; } else if (name.equals("stencilSetExtensionNamePrefix")) { stencilSetExtensionNamePrefix = value; } else if (name.equals("baseStencilSetPath")) { baseStencilSetPath = value; } else if (name.equals("baseStencilSet")) { baseStencilSet = value; } else if (name.equals("stencilSetExtension")) { stencilSetExtensionUrls.add(value); } else if (name.equals("baseStencil")) { baseStencil = value; } else if (name.equals("columnPropertyMapping")) { columnPropertyMapping = value.split(","); } else if (name.equals("modelDescription")) { modelDescription = value; } else if (name.equals("modelTags")) { modelTags = value.split(","); } else if (name.equals("additionalERDFContentForGeneratedModel")) { additionalERDFContentForGeneratedModel = value; } } else { // file field //System.out.println("File field " + name + " with file name " // + item.getName() + " detected."); // Process the input stream if (name.equals("csvFile")) { CsvMapReader csvFileReader = new CsvMapReader(new InputStreamReader(stream), CsvPreference.EXCEL_PREFERENCE); csvHeader = csvFileReader.getCSVHeader(true); if (columnPropertyMapping != null && columnPropertyMapping.length > 0) { csvHeader = columnPropertyMapping; } Map<String, String> row; while ((row = csvFileReader.read(csvHeader)) != null) { stencilPropertyMatrix.add(row); } } } } // generate stencil set Date creationDate = new Date(System.currentTimeMillis()); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss.SSS"); String stencilSetExtensionName = stencilSetExtensionNamePrefix + " " + dateFormat.format(creationDate); stencilSetExtensionUrls .add(StencilSetExtensionGenerator.generateStencilSetExtension(stencilSetExtensionName, stencilPropertyMatrix, columnPropertyMapping, baseStencilSet, baseStencil)); // generate new model String modelName = modelNamePrefix + stencilSetExtensionName; String model = repository.generateERDF(UUID.randomUUID().toString(), additionalERDFContentForGeneratedModel, baseStencilSetPath, baseStencilSet, stencilSetExtensionUrls, modelName, modelDescription); String modelUrl = baseUrl + repository.saveNewModel(model, modelName, modelDescription, baseStencilSet, baseStencilSetPath); // hack for reverse proxies: modelUrl = modelUrl.substring(modelUrl.lastIndexOf("http://")); // tag model if (modelTags != null) { for (String tagName : modelTags) { repository.addTag(modelUrl, tagName.trim()); } } // redirect client to editor with that newly generated model response.setHeader("Location", modelUrl); response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { // TODO Add some error message } }
From source file:org.owasp.esapi.waf.internal.InterceptingHTTPServletRequest.java
public InterceptingHTTPServletRequest(HttpServletRequest request) throws FileUploadException, IOException { super(request); allParameters = new Vector<Parameter>(); allParameterNames = new Vector<String>(); /*// w w w .j a va 2s .c o m * Get all the regular parameters. */ Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String param = (String) e.nextElement(); allParameters.add(new Parameter(param, request.getParameter(param), false)); allParameterNames.add(param); } /* * Get all the multipart fields. */ isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { requestBody = new RandomAccessFile(File.createTempFile("oew", "mpc"), "rw"); byte buffer[] = new byte[CHUNKED_BUFFER_SIZE]; long size = 0; int len = 0; while (len != -1 && size <= Integer.MAX_VALUE) { len = request.getInputStream().read(buffer, 0, CHUNKED_BUFFER_SIZE); if (len != -1) { size += len; requestBody.write(buffer, 0, len); } } is = new RAFInputStream(requestBody); ServletFileUpload sfu = new ServletFileUpload(); FileItemIterator iter = sfu.getItemIterator(this); while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); /* * If this is a regular form field, add it to our * parameter collection. */ if (item.isFormField()) { String value = Streams.asString(stream); allParameters.add(new Parameter(name, value, true)); allParameterNames.add(name); } else { /* * This is a multipart content that is not a * regular form field. Nothing to do here. */ } } requestBody.seek(0); } }
From source file:org.plista.kornakapi.web.servlets.BatchAddCandidatesServlet.java
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int batchSize = getParameterAsInt(request, Parameters.BATCH_SIZE, Parameters.DEFAULT_BATCH_SIZE); ServletFileUpload upload = new ServletFileUpload(); FileItemIterator fileItems; InputStream in = null;/*from w w w .ja v a 2 s.c om*/ boolean fileProcessed = false; Storage storage = this.getDomainIndependetStorage(); try { fileItems = upload.getItemIterator(request); while (fileItems.hasNext()) { FileItemStream item = fileItems.next(); if (Parameters.FILE.equals(item.getFieldName()) && !item.isFormField()) { in = item.openStream(); Iterator<Candidate> candidates = new CSVCandidateFileIterator(in); storage.batchAddCandidates(candidates, batchSize); fileProcessed = true; break; } } } catch (FileUploadException e) { throw new IOException(e); } finally { Closeables.closeQuietly(in); } if (!fileProcessed) { throw new IllegalStateException("Unable to find supplied data file!"); } }