Example usage for org.apache.commons.fileupload FileItemStream getFieldName

List of usage examples for org.apache.commons.fileupload FileItemStream getFieldName

Introduction

In this page you can find the example usage for org.apache.commons.fileupload FileItemStream getFieldName.

Prototype

String getFieldName();

Source Link

Document

Returns the name of the field in the multipart form corresponding to this file item.

Usage

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/* w w w . ja va  2  s . 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 void extractFromSinglePart(String subUnit, ResourceList resources, FileItemIterator iter)
        throws Exception {
    FileItemStream next = iter.next();
    InputStream inputStream = next.openStream();
    try {/*from w  w  w .  j a v  a  2s  .co m*/
        handleResource(subUnit, resources, next.getContentType(), next.getName(), next.getFieldName(),
                inputStream);
    } finally {
        inputStream.close();
    }
}

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;/*ww  w.  j  a  v a  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 v a 2s .  co  m
 * 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 va  2  s  .  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;//from  w ww  .  ja v  a 2  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.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 ww w .ja va2  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  w  w  .j a  v a2s  . co 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.polymap.rap.updownload.upload.FileUploadServlet.java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {/* ww w.j  a v a 2 s  .  c  om*/
        FileItemIterator it = fileUpload.getItemIterator(req);
        while (it.hasNext()) {
            FileItemStream item = it.next();
            String name = item.getFieldName();
            InputStream in = item.openStream();
            try {
                if (item.isFormField()) {
                    log.info("Form field " + name + " with value " + Streams.asString(in) + " detected.");
                } else {
                    log.info("File field " + name + " with file name " + item.getName() + " detected.");

                    String key = req.getParameter("handler");
                    assert key != null;
                    IUploadHandler handler = handlers.get(key);
                    // for the upload field we always get just one item (which has the length of the request!?)
                    int length = req.getContentLength();
                    handler.uploadStarted(item.getName(), item.getContentType(), length, in);
                }
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
    } catch (Exception e) {
        log.warn("", e);
        throw new RuntimeException(e);
    }
}

From source file:org.polymap.rap.updownload.upload.UploadService.java

@Override
public void service(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
    try {/*  w  w  w. jav a2 s.c  o m*/
        FileItemIterator it = fileUpload.getItemIterator(request);
        while (it.hasNext()) {
            FileItemStream item = it.next();

            try (InputStream in = item.openStream()) {
                if (item.isFormField()) {
                    log.info("Form field " + item.getFieldName() + " with value " + Streams.asString(in)
                            + " detected.");
                } else {
                    log.info("File field " + item.getFieldName() + " with file name " + item.getName()
                            + " detected.");

                    String handlerId = request.getParameter(ID_REQUEST_PARAM);
                    assert handlerId != null;
                    IUploadHandler handler = handlers.get(handlerId);
                    ClientFile clientFile = new ClientFile() {
                        @Override
                        public String getName() {
                            return item.getName();
                        }

                        @Override
                        public String getType() {
                            return item.getContentType();
                        }

                        @Override
                        public long getSize() {
                            // for the upload field we always get just one item (which has the length of the request!?)
                            return request.getContentLength();
                        }
                    };
                    handler.uploadStarted(clientFile, in);
                }
            }
        }
    } catch (Exception e) {
        log.warn("", e);
        throw new RuntimeException(e);
    }
}