Example usage for org.apache.commons.fileupload.servlet ServletFileUpload getItemIterator

List of usage examples for org.apache.commons.fileupload.servlet ServletFileUpload getItemIterator

Introduction

In this page you can find the example usage for org.apache.commons.fileupload.servlet ServletFileUpload getItemIterator.

Prototype

public FileItemIterator getItemIterator(HttpServletRequest request) throws FileUploadException, IOException 

Source Link

Document

Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> compliant <code>multipart/form-data</code> stream.

Usage

From source file:org.tangram.components.servlet.ServletRequestParameterAccess.java

/**
 * Weak visibility to avoid direct instanciation.
 *///  w  ww.j  a  v a 2  s. c  om
@SuppressWarnings("unchecked")
ServletRequestParameterAccess(HttpServletRequest request, long uploadFileMaxSize) {
    final String reqContentType = request.getContentType();
    LOG.debug("() uploadFileMaxSize={} request.contentType={}", uploadFileMaxSize, reqContentType);
    if (StringUtils.isNotBlank(reqContentType) && reqContentType.startsWith("multipart/form-data")) {
        ServletFileUpload upload = new ServletFileUpload();
        upload.setFileSizeMax(uploadFileMaxSize);
        try {
            for (FileItemIterator itemIterator = upload.getItemIterator(request); itemIterator.hasNext();) {
                FileItemStream item = itemIterator.next();
                String fieldName = item.getFieldName();
                InputStream stream = item.openStream();
                if (item.isFormField()) {
                    String[] value = parameterMap.get(item.getFieldName());
                    int i = 0;
                    if (value == null) {
                        value = new String[1];
                    } else {
                        String[] newValue = new String[value.length + 1];
                        System.arraycopy(value, 0, newValue, 0, value.length);
                        i = value.length;
                        value = newValue;
                    } // if
                    value[i] = Streams.asString(stream, "UTF-8");
                    LOG.debug("() request parameter {}='{}'", fieldName, value[0]);
                    parameterMap.put(item.getFieldName(), value);
                } else {
                    try {
                        LOG.debug("() item {} :{}", item.getName(), item.getContentType());
                        final byte[] bytes = IOUtils.toByteArray(stream);
                        if (bytes.length > 0) {
                            originalNames.put(fieldName, item.getName());
                            blobs.put(fieldName, bytes);
                        } // if
                    } catch (IOException ex) {
                        LOG.error("()", ex);
                        if (ex.getCause() instanceof FileUploadBase.FileSizeLimitExceededException) {
                            throw new RuntimeException(ex.getCause().getMessage()); // NOPMD we want to lose parts of our stack trace!
                        } // if
                    } // try/catch
                } // if
            } // for
        } catch (FileUploadException | IOException ex) {
            LOG.error("()", ex);
        } // try/catch
    } else {
        parameterMap = request.getParameterMap();
    } // if
}

From source file:org.tangram.spring.StreamingMultipartResolver.java

@Override
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException {
    ServletFileUpload upload = new ServletFileUpload();
    upload.setFileSizeMax(maxUploadSize);
    String encoding = determineEncoding(request);
    Map<String, String[]> multipartParameters = new HashMap<>();
    MultiValueMap<String, MultipartFile> multipartFiles = new LinkedMultiValueMap<>();
    Map<String, String> multipartFileContentTypes = new HashMap<>();

    try {//ww  w  .  j a v  a 2s .c  o  m
        FileItemIterator iter = upload.getItemIterator(request);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();

            String name = item.getFieldName();
            InputStream stream = item.openStream();
            if (item.isFormField()) {
                String value = Streams.asString(stream, encoding);
                String[] curParam = multipartParameters.get(name);
                if (curParam == null) {
                    // simple form field
                    multipartParameters.put(name, new String[] { value });
                } else {
                    // array of simple form fields
                    String[] newParam = StringUtils.addStringToArray(curParam, value);
                    multipartParameters.put(name, newParam);
                }
            } else {
                try {
                    MultipartFile file = new StreamingMultipartFile(item);
                    multipartFiles.add(name, file);
                    multipartFileContentTypes.put(name, file.getContentType());
                } catch (final IOException e) {
                    LOG.warn("({})", e.getCause().getMessage(), e);
                    MultipartFile file = new MultipartFile() {

                        @Override
                        public String getName() {
                            return "";
                        }

                        @Override
                        public String getOriginalFilename() {
                            return e.getCause().getMessage();
                        }

                        @Override
                        public String getContentType() {
                            return ERROR;
                        }

                        @Override
                        public boolean isEmpty() {
                            return true;
                        }

                        @Override
                        public long getSize() {
                            return 0L;
                        }

                        @Override
                        public byte[] getBytes() throws IOException {
                            return new byte[0];
                        }

                        @Override
                        public InputStream getInputStream() throws IOException {
                            return null;
                        }

                        @Override
                        public void transferTo(File file) throws IOException, IllegalStateException {
                            throw new UnsupportedOperationException("NYI", e);
                        }
                    };
                    multipartFiles.add(name, file);
                    multipartFileContentTypes.put(name, file.getContentType());
                } // try/catch
            } // if
        } // while
    } catch (IOException | FileUploadException e) {
        throw new MultipartException("Error uploading a file", e);
    } // try/catch

    return new DefaultMultipartHttpServletRequest(request, multipartFiles, multipartParameters,
            multipartFileContentTypes);
}

From source file:org.vosao.servlet.FileUploadServlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //logger.info("File upload...");
    ServletFileUpload upload = new ServletFileUpload();
    upload.setFileSizeMax(MAX_SIZE);//  ww  w . j a v  a2  s  .  c om
    upload.setHeaderEncoding("UTF-8");
    String message = null;
    Map<String, String> parameters = new HashMap<String, String>();
    List<UploadItem> uploadItems = new ArrayList<UploadItem>();
    try {
        FileItemIterator iter;
        try {
            iter = upload.getItemIterator(request);
            FileItemStream imageFileItem = null;
            String folder = null;
            InputStream stream = null;
            InputStream filestream = null;
            byte[] fileData = null;
            parameters.put(IMAGE_UPLOAD_PAGE_ID,
                    VosaoContext.getInstance().getSession().getString(IMAGE_UPLOAD_PAGE_ID));

            if (request.getParameter("CKEditorFuncNum") != null) {
                ckeditorFuncNum = request.getParameter("CKEditorFuncNum");
            }
            while (iter.hasNext()) {
                FileItemStream item = iter.next();
                stream = item.openStream();
                if (item.isFormField()) {
                    parameters.put(item.getFieldName(), Streams.asString(stream, "UTF-8"));
                } else {
                    UploadItem uploadItem = new UploadItem();
                    uploadItem.item = item;
                    uploadItem.data = StreamUtil.readFileStream(stream);
                    uploadItems.add(uploadItem);
                }
            }
            //logger.info(parameters.toString());
            for (UploadItem item : uploadItems) {
                message = processFile(item.item, item.data, parameters);
            }
        } catch (FileUploadException e) {
            logger.error(Messages.get("request_parsing_error"));
            throw new UploadException(Messages.get("request_parsing_error"));
        }
    } catch (UploadException e) {
        message = createMessage("error", e.getMessage());
        logger.error(message);
    }
    if (isCKeditorUpload(parameters)) {
        response.setContentType("text/html");
    } else {
        response.setContentType("text/plain");
    }
    response.setStatus(200);
    response.getWriter().write(message);
}

From source file:org.vosao.servlet.FormSendServlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String message = null;/*from w  ww . j av  a2 s.  c  o  m*/
    Map<String, String> parameters = new HashMap<String, String>();
    List<FileItem> files = new ArrayList<FileItem>();
    try {
        if (request.getContentType().startsWith("multipart/form-data")) {
            ServletFileUpload upload = new ServletFileUpload();
            upload.setFileSizeMax(MAX_SIZE);
            upload.setHeaderEncoding("UTF-8");
            FileItemIterator iter;
            try {
                iter = upload.getItemIterator(request);
                InputStream stream = null;
                while (iter.hasNext()) {
                    FileItemStream item = iter.next();
                    stream = item.openStream();
                    if (item.isFormField()) {
                        parameters.put(item.getFieldName(), Streams.asString(stream, "UTF-8"));
                    } else {
                        files.add(new FileItem(item, StreamUtil.readFileStream(stream)));
                    }
                }
            } catch (FileUploadException e) {
                logger.error(e.getMessage());
                throw new UploadException(Messages.get("request_parsing_error"));
            }
        } else {
            for (Object key : request.getParameterMap().keySet()) {
                String paramName = (String) key;
                parameters.put(paramName, request.getParameter(paramName));
            }
        }
        message = processForm(parameters, files, request);
    } catch (UploadException e) {
        message = createMessage("error", e.getMessage());
        logger.error(message);
    } catch (Exception e) {
        message = createMessage("error", e.getMessage());
        logger.error(message);
        e.printStackTrace();
    }
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    response.setStatus(200);
    response.getWriter().write(message);
}

From source file:org.wahlzeit.servlets.MainServlet.java

/**
 * Searches for files in the request and puts them in the resulting map with the key "fileName". When a file is
 * found, you can access its path by searching for elements with the key "fileName".
 *//*  w  w  w  .  j a va  2  s  .  c om*/
protected Map getMultiPartRequestArgs(HttpServletRequest request, UserSession us)
        throws IOException, ServletException {
    Map<String, String> result = new HashMap<String, String>();
    result.putAll(request.getParameterMap());
    try {
        ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iterator = upload.getItemIterator(request);

        while (iterator.hasNext()) {
            FileItemStream fileItemStream = iterator.next();
            String filename = fileItemStream.getName();

            if (!fileItemStream.isFormField()) {
                InputStream inputStream = fileItemStream.openStream();
                Image image = getImage(inputStream);
                User user = (User) us.getClient();
                user.setUploadedImage(image);
                result.put("fileName", filename);
                log.config(
                        LogBuilder.createSystemMessage().addParameter("Uploaded image", filename).toString());
            } else {
                String key = fileItemStream.getFieldName();
                InputStream is = fileItemStream.openStream();
                String value = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8));
                result.put(key, value);
                log.config(LogBuilder.createSystemMessage().addParameter("Key of uploaded parameter", key)
                        .addParameter("value", value).toString());
            }
        }
    } catch (Exception ex) {
        throw new ServletException(ex);
    }

    return result;
}

From source file:org.waterforpeople.mapping.app.web.PhotoUpload.java

public void doPost(HttpServletRequest req, HttpServletResponse resp) {
    Properties props = System.getProperties();

    String bucket = props.getProperty("s3bucket");
    ServletFileUpload upload = new ServletFileUpload();
    try {//from  ww w  . ja  v  a 2s .c o  m
        FileItemIterator iterator = upload.getItemIterator(req);
        while (iterator.hasNext()) {
            FileItemStream item = iterator.next();
            InputStream in = item.openStream();
            ByteArrayOutputStream out = null;
            try {

                in = item.openStream();
                out = new ByteArrayOutputStream();
                byte[] buffer = new byte[8096];
                int size;

                while ((size = in.read(buffer, 0, buffer.length)) != -1) {
                    out.write(buffer, 0, size);
                }
            } catch (IOException e) {
                log.log(Level.SEVERE, "Could not rotate image", e);
            }
            S3Driver s3 = new S3Driver();
            s3.uploadFile(bucket, "images/" + item.getName(), out.toByteArray());
        }
    } catch (Exception e) {
        log.log(Level.SEVERE, "Could not save image", e);
    }

}

From source file:password.pwm.http.PwmRequest.java

public InputStream readFileUploadStream(final String filePartName)
        throws IOException, ServletException, PwmUnrecoverableException {
    try {/*from  w  w w  .j av a 2s  . c  o  m*/
        if (ServletFileUpload.isMultipartContent(this.getHttpServletRequest())) {

            // Create a new file upload handler
            final ServletFileUpload upload = new ServletFileUpload();

            // Parse the request
            for (final FileItemIterator iter = upload.getItemIterator(this.getHttpServletRequest()); iter
                    .hasNext();) {
                final FileItemStream item = iter.next();

                if (filePartName.equals(item.getFieldName())) {
                    return item.openStream();
                }
            }
        }
    } catch (Exception e) {
        LOGGER.error("error reading file upload: " + e.getMessage());
    }
    return null;
}

From source file:password.pwm.http.PwmRequest.java

public Map<String, FileUploadItem> readFileUploads(final int maxFileSize, final int maxItems)
        throws IOException, ServletException, PwmUnrecoverableException {
    final Map<String, FileUploadItem> returnObj = new LinkedHashMap<>();
    try {//from   ww w  .ja  va2 s  . c o  m
        if (ServletFileUpload.isMultipartContent(this.getHttpServletRequest())) {
            final ServletFileUpload upload = new ServletFileUpload();
            final FileItemIterator iter = upload.getItemIterator(this.getHttpServletRequest());
            while (iter.hasNext() && returnObj.size() < maxItems) {
                final FileItemStream item = iter.next();
                final InputStream inputStream = item.openStream();
                final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                final long length = IOUtils.copyLarge(inputStream, baos, 0, maxFileSize + 1);
                if (length > maxFileSize) {
                    final ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,
                            "upload file size limit exceeded");
                    LOGGER.error(this, errorInformation);
                    respondWithError(errorInformation);
                    return Collections.emptyMap();
                }
                final byte[] outputFile = baos.toByteArray();
                final FileUploadItem fileUploadItem = new FileUploadItem(item.getName(), item.getContentType(),
                        outputFile);
                returnObj.put(item.getFieldName(), fileUploadItem);
            }
        }
    } catch (Exception e) {
        LOGGER.error("error reading file upload: " + e.getMessage());
    }
    return Collections.unmodifiableMap(returnObj);
}

From source file:password.pwm.http.ServletHelper.java

public static String readFileUpload(final HttpServletRequest req, final String filePartName, int maxFileChars)
        throws IOException, ServletException, PwmUnrecoverableException {
    try {//w ww.j av a  2  s  .  c om
        if (ServletFileUpload.isMultipartContent(req)) {

            // Create a new file upload handler
            final ServletFileUpload upload = new ServletFileUpload();

            String uploadFile = null;

            // Parse the request
            for (final FileItemIterator iter = upload.getItemIterator(req); iter.hasNext();) {
                final FileItemStream item = iter.next();

                if (filePartName.equals(item.getFieldName())) {
                    uploadFile = streamToString(item.openStream(), maxFileChars);
                }
            }

            return uploadFile;
        }
    } catch (Exception e) {
        LOGGER.error("error reading file upload: " + e.getMessage());
    }
    return null;
}

From source file:password.pwm.http.ServletHelper.java

public static InputStream readFileUpload(final HttpServletRequest req, final String filePartName)
        throws IOException, ServletException, PwmUnrecoverableException {
    try {/*from  ww w.j  a  v  a2s .c o m*/
        if (ServletFileUpload.isMultipartContent(req)) {

            // Create a new file upload handler
            final ServletFileUpload upload = new ServletFileUpload();

            // Parse the request
            for (final FileItemIterator iter = upload.getItemIterator(req); iter.hasNext();) {
                final FileItemStream item = iter.next();

                if (filePartName.equals(item.getFieldName())) {
                    return item.openStream();
                }
            }
        }
    } catch (Exception e) {
        LOGGER.error("error reading file upload: " + e.getMessage());
    }
    return null;
}