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.oryxeditor.server.StencilSetExtensionGeneratorServlet.java

/**
 * Request parameters are documented in/*from   w  w  w  .j a v  a 2  s .  c om*/
 * 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 ww.  ja  v  a  2s. c  om
     * 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;//from w w  w. jav a 2s. c  o m
    InputStream in = null;

    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!");
    }
}

From source file:org.plista.kornakapi.web.servlets.BatchDeleteCandidatesServlet.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;//from  w ww.  ja  v  a2  s  .  c  o m
    InputStream in = null;

    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.batchDeleteCandidates(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!");
    }
}

From source file:org.plista.kornakapi.web.servlets.BatchSetPreferencesServlet.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;//w ww  . j  av a2  s  .c o  m
    InputStream in = null;

    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<Preference> preferences = new CSVPreferenceFileIterator(in);

                storage.batchSetPreferences(preferences, 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!");
    }
}

From source file:org.retrostore.request.RequestDataImpl.java

/**
 * Parses a multipart request and gets its files and parameters.
 *//*from   w ww  .ja va2s . c  om*/
private static void parseMultipartContent(HttpServletRequest request, Map<String, String> formParams,
        List<UploadFile> uploadFiles) {
    if (!ServletFileUpload.isMultipartContent(request)) {
        return;
    }

    ServletFileUpload upload = new ServletFileUpload();
    try {
        FileItemIterator itemIterator = upload.getItemIterator(request);
        while (itemIterator.hasNext()) {
            FileItemStream file = itemIterator.next();
            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
            ByteStreams.copy(file.openStream(), bytesOut);
            byte[] bytes = bytesOut.toByteArray();

            // If an item has a name, we think it's a file, otherwise we treat it as a regular string
            // parameter.
            if (!Strings.isNullOrEmpty(file.getName())) {
                uploadFiles.add(new UploadFile(file.getFieldName(), file.getName(), bytes));
            } else {
                String str = new String(bytes, StandardCharsets.UTF_8);
                formParams.put(file.getFieldName(), str);
            }
        }
    } catch (FileUploadException | IOException e) {
        LOG.log(Level.WARNING, "Cannot parse request for filename.", e);
    }
}

From source file:org.sigmah.server.endpoint.export.sigmah.ExportModelServlet.java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    if (ServletFileUpload.isMultipartContent(req)) {

        final Authentication authentication = retrieveAuthentication(req);
        boolean hasPermission = false;

        if (authentication != null) {
            final User user = authentication.getUser();
            ProfileDTO profile = SigmahAuthDictionaryServlet.aggregateProfiles(user, null, injector);
            hasPermission = ProfileUtils.isGranted(profile, GlobalPermissionEnum.VIEW_ADMIN);
        }//from  w w w.  jav  a  2 s . c  om

        if (hasPermission) {

            final ServletFileUpload fileUpload = new ServletFileUpload();

            final HashMap<String, String> properties = new HashMap<String, String>();
            byte[] data = null;

            try {
                final FileItemIterator iterator = fileUpload.getItemIterator(req);

                // Iterating on the fields sent into the request
                while (iterator.hasNext()) {

                    final FileItemStream item = iterator.next();
                    final String name = item.getFieldName();

                    final InputStream stream = item.openStream();

                    if (item.isFormField()) {
                        final String value = Streams.asString(stream);
                        LOG.debug("field '" + name + "' = '" + value + '\'');

                        // The current field is a property
                        properties.put(name, value);

                    } else {
                        // The current field is a file
                        LOG.debug("field '" + name + "' (FILE)");

                        final ByteArrayOutputStream serializedData = new ByteArrayOutputStream();
                        long dataSize = 0L;

                        int b = stream.read();

                        while (b != -1 && dataSize < MAXIMUM_FILE_SIZE) {
                            serializedData.write(b);

                            dataSize++;
                            b = stream.read();
                        }

                        stream.close();

                        data = serializedData.toByteArray();
                    }
                }

            } catch (FileUploadException ex) {
                LOG.warn("Error while receiving a serialized model.", ex);
            }

            if (data != null) {
                // A file has been received

                final String type = properties.get("type");
                final ModelHandler handler = handlers.get(type);

                if (handler != null) {

                    if (handler instanceof ProjectModelHandler) {
                        final String projectModelTypeAsString = properties.get("project-model-type");
                        try {
                            final ProjectModelType projectModelType = ProjectModelType
                                    .valueOf(projectModelTypeAsString);
                            ((ProjectModelHandler) handler).setProjectModelType(projectModelType);
                        } catch (IllegalArgumentException e) {
                            LOG.debug("Bad value for project model type: " + projectModelTypeAsString, e);
                        }
                    }

                    final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);

                    try {
                        handler.importModel(inputStream, injector.getInstance(EntityManager.class),
                                authentication);

                    } catch (ExportException ex) {
                        LOG.error("Model import error, type: " + type, ex);
                        resp.sendError(500);
                    }

                } else {
                    LOG.warn("The asked model type (" + type + ") doesn't have any handler registered.");
                    resp.sendError(501);
                }
            } else {
                LOG.warn("No file has been received.");
                resp.sendError(400);
            }
        } else {
            LOG.warn("Unauthorized access to the import service from user " + authentication);
            resp.sendError(401);
        }

    } else {
        LOG.warn("The request doesn't have the correct enctype.");
        resp.sendError(400);
    }
}

From source file:org.sigmah.server.servlet.ImportServlet.java

private byte[] readFileAndProperties(final HttpServletRequest request, final Map<String, String> properties)
        throws FileUploadException, IOException {
    byte[] data = null;
    final ServletFileUpload fileUpload = new ServletFileUpload();

    final FileItemIterator iterator = fileUpload.getItemIterator(request);

    // Iterating on the fields sent into the request
    while (iterator.hasNext()) {

        final FileItemStream item = iterator.next();
        final String name = item.getFieldName();

        final InputStream stream = item.openStream();

        if (item.isFormField()) {

            final String value = Streams.asString(stream);

            LOG.debug("field '" + name + "' = '" + value + '\'');

            // The current field is a property
            properties.put(name, value);

        } else {/*from  w  w  w .  j  a v  a  2s . co  m*/
            // The current field is a file
            LOG.debug("field '" + name + "' (FILE)");

            final ByteArrayOutputStream serializedData = new ByteArrayOutputStream();
            long dataSize = 0L;

            int b = stream.read();

            while (b != -1 && dataSize < MAXIMUM_FILE_SIZE) {
                serializedData.write(b);

                dataSize++;
                b = stream.read();
            }

            stream.close();

            data = serializedData.toByteArray();
        }
    }

    return data;
}

From source file:org.sosy_lab.cpachecker.appengine.server.resource.TasksServerResource.java

@Override
public Representation createTaskFromHtml(Representation input) throws IOException {
    List<String> errors = new LinkedList<>();
    Map<String, Object> settings = new HashMap<>();
    Map<String, String> options = new HashMap<>();

    ServletFileUpload upload = new ServletFileUpload();
    try {//w  w  w . ja v  a 2 s  . c  o m
        FileItemIterator iter = upload.getItemIterator(ServletUtils.getRequest(getRequest()));
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            InputStream stream = item.openStream();
            if (item.isFormField()) {
                String value = Streams.asString(stream);
                switch (item.getFieldName()) {
                case "specification":
                    value = (value.equals("")) ? null : value;
                    settings.put("specification", value);
                    break;
                case "configuration":
                    value = (value.equals("")) ? null : value;
                    settings.put("configuration", value);
                    break;
                case "disableOutput":
                    options.put("output.disable", "true");
                    break;
                case "disableExportStatistics":
                    options.put("statistics.export", "false");
                    break;
                case "dumpConfig":
                    options.put("configuration.dumpFile", "UsedConfiguration.properties");
                    break;
                case "logLevel":
                    options.put("log.level", value);
                    break;
                case "machineModel":
                    options.put("analysis.machineModel", value);
                    break;
                case "wallTime":
                    options.put("limits.time.wall", value);
                    break;
                case "instanceType":
                    options.put("gae.instanceType", value);
                    break;
                case "programText":
                    if (!value.isEmpty()) {
                        settings.put("programName", "program.c");
                        settings.put("programText", value);
                    }
                    break;
                }
            } else {
                if (settings.get("programText") == null) {
                    settings.put("programName", item.getName());
                    settings.put("programText", IOUtils.toString(stream));
                }
            }
        }
    } catch (FileUploadException | IOException e) {
        getLogger().log(Level.WARNING, "Could not upload program file.", e);
        errors.add("task.program.CouldNotUpload");
    }

    settings.put("options", options);

    Task task = null;
    if (errors.isEmpty()) {
        TaskBuilder taskBuilder = new TaskBuilder();
        task = taskBuilder.fromMap(settings);
        errors = taskBuilder.getErrors();
    }

    if (errors.isEmpty()) {
        try {
            Configuration config = Configuration.builder().setOptions(task.getOptions()).build();
            new GAETaskQueueTaskExecutor(config).execute(task);
        } catch (InvalidConfigurationException e) {
            errors.add("error.invalidConfiguration");
        }
    }

    if (errors.isEmpty()) {
        getResponse().setStatus(Status.SUCCESS_CREATED);
        redirectSeeOther("/tasks/" + task.getKey());
        return getResponseEntity();
    }

    getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
    return FreemarkerUtil.templateBuilder().context(getContext()).addData("task", task)
            .addData("errors", errors).addData("allowedOptions", DefaultOptions.getDefaultOptions())
            .addData("defaultOptions", DefaultOptions.getImmutableOptions())
            .addData("specifications", DefaultOptions.getSpecifications())
            .addData("configurations", DefaultOptions.getConfigurations())
            .addData("cpacheckerVersion", CPAchecker.getCPAcheckerVersion()).templateName("root.ftl").build();
}

From source file:org.synchronoss.cloud.nio.multipart.example.web.MultipartController.java

/**
 * <p> Example of parsing the multipart request using commons file upload. In this case the parsing happens in blocking io.
 *
 * @param request The {@code HttpServletRequest}
 * @return The {@code VerificationItems}
 * @throws Exception if an exception happens during the parsing
 *//*w  w  w. ja va2  s  .  c  o m*/
@RequestMapping(value = "/blockingio/fileupload/multipart", method = RequestMethod.POST)
public @ResponseBody VerificationItems blockingIoMultipart(final HttpServletRequest request) throws Exception {

    assertRequestIsMultipart(request);

    final ServletFileUpload servletFileUpload = new ServletFileUpload();
    final FileItemIterator fileItemIterator = servletFileUpload.getItemIterator(request);

    final VerificationItems verificationItems = new VerificationItems();
    Metadata metadata = null;
    while (fileItemIterator.hasNext()) {
        FileItemStream fileItemStream = fileItemIterator.next();
        if (METADATA_FIELD_NAME.equals(fileItemStream.getFieldName())) {
            if (metadata != null) {
                throw new IllegalStateException("Found more than one metadata field");
            }
            metadata = unmarshalMetadata(fileItemStream.openStream());
        } else {
            VerificationItem verificationItem = buildVerificationItem(fileItemStream.openStream(),
                    fileItemStream.getFieldName());
            verificationItems.getVerificationItems().add(verificationItem);
        }
    }
    processVerificationItems(verificationItems, metadata, false);
    return verificationItems;
}