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.jasig.portal.utils.web.FileUploadLogger.java

public static void logFileUploadInfo(HttpServletRequest request) {
    final boolean multipartContent = ServletFileUpload.isMultipartContent(request);
    System.out.println("multipartContent=" + multipartContent);
    if (!multipartContent) {
        return;//from   w  w w  . j  a  v a2 s  .  c om
    }

    DiskFileItemFactory factory = new DiskFileItemFactory();
    final ServletFileUpload servletFileUpload = new ServletFileUpload(factory);

    try {
        final FileItemIterator itemIterator = servletFileUpload.getItemIterator(request);
        while (itemIterator.hasNext()) {
            final FileItemStream next = itemIterator.next();
            System.out.println("FileItemStream: " + next.getName());
            System.out.println("\t" + next.getContentType());
            System.out.println("\t" + next.getFieldName());

            final FileItemHeaders headers = next.getHeaders();
            if (headers != null) {
                System.out.println(
                        "\t" + Arrays.toString(Iterators.toArray(headers.getHeaderNames(), String.class)));
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:org.javalite.activeweb.HttpSupport.java

/**
 * Returns a collection of uploaded files from a multi-part port request.
 *
 * @param encoding specifies the character encoding to be used when reading the headers of individual part.
 * When not specified, or null, the request encoding is used. If that is also not specified, or null,
 * the platform default encoding is used.
 * @param maxFileSize maximum file size in the upload in bytes. -1 indicates no limit.
 *
 * @return a collection of uploaded files from a multi-part port request.
 *//*  www .j  a va2 s. c  o m*/
protected Iterator<FormItem> uploadedFiles(String encoding, long maxFileSize) {
    HttpServletRequest req = Context.getHttpRequest();

    Iterator<FormItem> iterator;

    if (req instanceof AWMockMultipartHttpServletRequest) {//running inside a test, and simulating upload.
        iterator = ((AWMockMultipartHttpServletRequest) req).getFormItemIterator();
    } else {
        if (!ServletFileUpload.isMultipartContent(req))
            throw new ControllerException(
                    "this is not a multipart request, be sure to add this attribute to the form: ... enctype=\"multipart/form-data\" ...");

        ServletFileUpload upload = new ServletFileUpload();
        if (encoding != null)
            upload.setHeaderEncoding(encoding);
        upload.setFileSizeMax(maxFileSize);
        try {
            FileItemIterator it = upload.getItemIterator(Context.getHttpRequest());
            iterator = new FormItemIterator(it);
        } catch (Exception e) {
            throw new ControllerException(e);
        }
    }
    return iterator;
}

From source file:org.jbpm.designer.server.StencilSetExtensionGeneratorServlet.java

/**
 * Request parameters are documented in//from www  .j  a  v a  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;
                    }
                }
            }

            // 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.jbpm.designer.web.server.menu.connector.AbstractConnectorServlet.java

/**
 * Parse request parameters and files.//  ww  w.j  a v a 2s.  c o  m
 * @param request
 * @param response
 */
protected void parseRequest(HttpServletRequest request, HttpServletResponse response) {
    requestParams = new HashMap<String, Object>();
    listFiles = new ArrayList<FileItemStream>();
    listFileStreams = new ArrayList<ByteArrayOutputStream>();

    // Parse the request
    if (ServletFileUpload.isMultipartContent(request)) {
        // multipart request
        try {
            ServletFileUpload upload = new ServletFileUpload();
            FileItemIterator iter = upload.getItemIterator(request);
            while (iter.hasNext()) {
                FileItemStream item = iter.next();
                String name = item.getFieldName();
                InputStream stream = item.openStream();
                if (item.isFormField()) {
                    requestParams.put(name, Streams.asString(stream));
                } else {
                    String fileName = item.getName();
                    if (fileName != null && !"".equals(fileName.trim())) {
                        listFiles.add(item);

                        ByteArrayOutputStream os = new ByteArrayOutputStream();
                        IOUtils.copy(stream, os);
                        listFileStreams.add(os);
                    }
                }
            }
        } catch (Exception e) {
            logger.error("Unexpected error parsing multipart content", e);
        }
    } else {
        // not a multipart
        for (Object mapKey : request.getParameterMap().keySet()) {
            String mapKeyString = (String) mapKey;

            if (mapKeyString.endsWith("[]")) {
                // multiple values
                String values[] = request.getParameterValues(mapKeyString);
                List<String> listeValues = new ArrayList<String>();
                for (String value : values) {
                    listeValues.add(value);
                }
                requestParams.put(mapKeyString, listeValues);
            } else {
                // single value
                String value = request.getParameter(mapKeyString);
                requestParams.put(mapKeyString, value);
            }
        }
    }
}

From source file:org.jdesktop.wonderland.modules.contentrepo.web.servlet.BrowserServlet.java

protected ContentNode handleUpload(HttpServletRequest request, HttpServletResponse response, ContentNode node,
        String action) throws ServletException, IOException, ContentRepositoryException {
    if (!(node instanceof ContentCollection)) {
        error(request, response, "Not a directory");
        return null;
    }/*from   w ww .  j ava2s.c o  m*/

    ContentCollection dir = (ContentCollection) node;

    /* Check that we have a file upload request */
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (isMultipart == false) {
        logger.warning("[Runner] UPLOAD Bad request");
        String message = "Unable to recognize upload request. Please " + "try again.";
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
        return null;
    }

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

    // Parse the request
    try {
        FileItemIterator iter = upload.getItemIterator(request);
        while (iter.hasNext() == true) {
            FileItemStream item = iter.next();
            String name = item.getName();
            InputStream stream = item.openStream();
            if (item.isFormField() == false) {
                ContentResource child = (ContentResource) dir.createChild(name, ContentNode.Type.RESOURCE);

                File tmp = File.createTempFile("contentupload", "tmp");
                RunUtil.writeToFile(stream, tmp);
                child.put(tmp);
                tmp.delete();
            }
        }

        return node;
    } catch (FileUploadException excp) {
        /* Log an error to the log and write an error message back */
        logger.log(Level.WARNING, "[Runner] UPLOAD Failed", excp);
        String message = "Unable to upload runner for some reason.";
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message);
        return null;
    } catch (IOException excp) {
        /* Log an error to the log and write an error message back */
        logger.log(Level.WARNING, "[Runner] UPLOAD Failed", excp);
        String message = "Unable to upload runner for some reason.";
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message);
        return null;
    }
}

From source file:org.jdesktop.wonderland.modules.servlets.ModuleUploadServlet.java

/** 
* Handles the HTTP <code>POST</code> method.
* @param request servlet request/*  ww  w.j av  a  2 s . c  o  m*/
* @param response servlet response
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    /*
     * Create a factory for disk-base file items to handle the request. Also
     * place the file in add/.
     */
    String redirect = "/installFailed.jsp";
    ModuleManager manager = ModuleManager.getModuleManager();

    /* Check that we have a file upload request */
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (isMultipart == false) {
        LOGGER.warning("Failed to upload module, isMultipart=false");
        String msg = "Unable to recognize upload request. Please try again.";
        request.setAttribute("errorMessage", msg);
        RequestDispatcher rd = request.getRequestDispatcher(redirect);
        rd.forward(request, response);
        return;
    }

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

    // Parse the request
    try {
        FileItemIterator iter = upload.getItemIterator(request);
        while (iter.hasNext() == true) {
            FileItemStream item = iter.next();
            InputStream stream = item.openStream();
            if (item.isFormField() == false) {
                /*
                 * The name given should have a .jar extension. Check this here. If
                 * not, return an error. If so, parse out just the module name.
                 */
                String moduleJar = item.getName();
                if (moduleJar.endsWith(".jar") == false) {
                    /* Log an error to the log and write an error message back */
                    LOGGER.warning("Upload is not a jar file " + moduleJar);
                    String msg = "The file " + moduleJar + " needs to be" + " a jar file. Please try again.";
                    request.setAttribute("errorMessage", msg);
                    RequestDispatcher rd = request.getRequestDispatcher(redirect);
                    rd.forward(request, response);
                    return;
                }
                String moduleName = moduleJar.substring(0, moduleJar.length() - 4);

                LOGGER.info("Upload Install module " + moduleName + " with file name " + moduleJar);

                /*
                 * Write the file a temporary file
                 */
                File tmpFile = null;
                try {
                    tmpFile = File.createTempFile(moduleName + "_tmp", ".jar");
                    tmpFile.deleteOnExit();
                    RunUtil.writeToFile(stream, tmpFile);
                } catch (java.lang.Exception excp) {
                    /* Log an error to the log and write an error message back */
                    LOGGER.log(Level.WARNING, "Failed to save file", excp);
                    String msg = "Internal error installing the module.";
                    request.setAttribute("errorMessage", msg);
                    RequestDispatcher rd = request.getRequestDispatcher(redirect);
                    rd.forward(request, response);
                    return;
                }

                /* Add the new module */
                Collection<File> moduleFiles = new LinkedList<File>();
                moduleFiles.add(tmpFile);
                Collection<Module> result = manager.addToInstall(moduleFiles);
                if (result.isEmpty() == true) {
                    /* Log an error to the log and write an error message back */
                    LOGGER.warning("Failed to install module " + moduleName);
                    String msg = "Internal error installing the module.";
                    request.setAttribute("errorMessage", msg);
                    RequestDispatcher rd = request.getRequestDispatcher(redirect);
                    rd.forward(request, response);
                    return;
                }
            }
        }
    } catch (FileUploadException excp) {
        /* Log an error to the log and write an error message back */
        LOGGER.log(Level.WARNING, "File upload failed", excp);
        String msg = "Failed to upload the file. Please try again.";
        request.setAttribute("errorMessage", msg);
        RequestDispatcher rd = request.getRequestDispatcher(redirect);
        rd.forward(request, response);
        return;
    }

    /* Install all of the modules that are possible */
    manager.installAll();

    /* If we have reached here, then post a simple message */
    LOGGER.info("Added module successfully");
    RequestDispatcher rd = request.getRequestDispatcher("/installSuccess.jsp");
    rd.forward(request, response);
}

From source file:org.jlibrary.web.servlet.JLibraryForwardServlet.java

private void upload(HttpServletRequest req, HttpServletResponse resp) {

    ServletFileUpload upload = new ServletFileUpload();
    boolean sizeExceeded = false;
    String repositoryName = req.getParameter("repository");
    ConfigurationService conf = (ConfigurationService) context.getBean("template");
    upload.setSizeMax(conf.getOperationInputBandwidth());

    try {//from ww  w. ja v a  2s .  co m
        params = new HashMap();
        FileItemIterator iter = upload.getItemIterator(req);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            InputStream stream = item.openStream();
            if (item.isFormField()) {
                params.put(item.getFieldName(), Streams.asString(stream));
            } else {
                params.put("filename", item.getName());
                uploadDocumentStructure(req, resp, repositoryName, stream);
            }
        }
    } catch (SizeLimitExceededException e) {
        sizeExceeded = true;
        if (repositoryName == null || "".equals(repositoryName)) {
            repositoryName = (String) params.get("repository");
        }
        logErrorAndForward(req, resp, repositoryName, e, "Bandwith exceeded");
    } catch (FileUploadException e) {
        logErrorAndForward(req, resp, repositoryName, e, "There was a problem uploading the document.");
    } catch (IOException e) {
        logErrorAndForward(req, resp, repositoryName, e, "There was a problem uploading the document.");
    } catch (Exception t) {
        logErrorAndForward(req, resp, repositoryName, t, "There was a problem uploading the document.");
    }

}

From source file:org.jolokia.osgish.upload.UploadServlet.java

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    if (!ServletFileUpload.isMultipartContent(request)) {
        throw new ServletException("Request has no multipart content");
    }/*  ww w . j ava 2  s .  com*/
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload();

    // Parse the request
    FileItemIterator iter;
    try {
        iter = upload.getItemIterator(request);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            InputStream in = item.openStream();
            if (item.isFormField()) {
                throw new ServletException("A Form field is not expected here");
            } else {
                File dest = new File(uploadDirectory, item.getName());
                try {
                    OutputStream out = new FileOutputStream(dest);
                    copy(in, out);
                    LogService log = (LogService) logTracker.getService();
                    if (log != null) {
                        log.log(LogService.LOG_INFO,
                                "Uploaded " + dest.getName() + " (size: " + dest.length() + ")");
                    }
                    // TODO: Return internal location/url of this bundle
                } catch (IOException exp) {
                    throw new ServletException(
                            "Cannot copy uploaded file to " + dest.getAbsolutePath() + ": " + exp, exp);
                }
            }
        }
    } catch (FileUploadException e) {
        throw new ServletException("Upload failed: " + e, e);
    }
    response.setStatus(HttpServletResponse.SC_OK);
}

From source file:org.jumpmind.symmetric.web.FileSyncPushUriHandler.java

public void handle(HttpServletRequest req, HttpServletResponse res)
        throws IOException, ServletException, FileUploadException {
    String nodeId = ServletUtils.getParameter(req, WebConstants.NODE_ID);

    if (StringUtils.isBlank(nodeId)) {
        ServletUtils.sendError(res, HttpServletResponse.SC_BAD_REQUEST, "Node must be specified");
        return;//from   ww  w  .  j ava  2 s.  c o m
    } else if (!ServletFileUpload.isMultipartContent(req)) {
        ServletUtils.sendError(res, HttpServletResponse.SC_BAD_REQUEST, "We only handle multipart requests");
        return;
    } else {
        log.debug("File sync push request received from {}", nodeId);
    }

    ServletFileUpload upload = new ServletFileUpload();

    // Parse the request
    FileItemIterator iter = upload.getItemIterator(req);
    while (iter.hasNext()) {
        FileItemStream item = iter.next();
        String name = item.getFieldName();
        if (!item.isFormField()) {
            log.debug("Processing upload file field " + name + " with file name " + item.getName()
                    + " detected.");
            engine.getFileSyncService().loadFilesFromPush(nodeId, item.openStream(), res.getOutputStream());

        }
    }

    res.flushBuffer();

}

From source file:org.kaaproject.avro.ui.sandbox.services.FileUploadServlet.java

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    ServletFileUpload upload = new ServletFileUpload();

    try {//from   w w  w. ja v a2s .co m
        FileItemIterator iterator = upload.getItemIterator(request);
        if (iterator.hasNext()) {
            FileItemStream item = iterator.next();
            String name = item.getFieldName();

            logger.debug("Uploading file '{}' with item name '{}'", item.getName(), name);

            InputStream stream = item.openStream();

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            Streams.copy(stream, out, true);

            byte[] data = out.toByteArray();

            response.setStatus(HttpServletResponse.SC_OK);
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            response.getWriter().print(new String(data));
            response.flushBuffer();
        } else {
            logger.error("No file found in post request!");
            throw new RuntimeException("No file found in post request!");
        }
    } catch (Exception e) {
        logger.error("Unexpected error in FileUploadServlet.doPost: ", e);
        throw new RuntimeException(e);
    }
}