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

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

Introduction

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

Prototype

String getName();

Source Link

Document

Returns the original filename in the client's filesystem, as provided by the browser (or other client software).

Usage

From source file:org.olat.core.gui.components.form.flexible.impl.Form.java

/**
 * Internal helper to initialize the request parameter map an to temporary store the uploaded files when a multipart request is used. The files are stored to a
 * temporary location and a filehandle is added to the requestMultipartFiles map for later retrieval by the responsible FormItem.
 * /*  w  w  w  . j a v a  2s. c  om*/
 * @param ureq
 */
private void doInitRequestParameterAndMulipartData(UserRequest ureq) {
    // First fill parameter map either from multipart data or standard http request
    if (isMultipartEnabled() && ServletFileUpload.isMultipartContent(ureq.getHttpReq())) {
        long uploadSize = -1; // default unlimited
        // Limit size of complete upload form: upload size limit + 500k for
        // other input fields
        if (multipartUploadMaxSizeKB > -1) {
            uploadSize = (multipartUploadMaxSizeKB * 1024l * 1024l) + 512000l;
        }

        // Create a new file upload handler, use commons fileupload streaming
        // API to save files right to the tmp location
        ServletFileUpload uploadParser = new ServletFileUpload();
        uploadParser.setSizeMax(uploadSize);
        // Parse the request
        try {
            FileItemIterator iter = uploadParser.getItemIterator(ureq.getHttpReq());
            while (iter.hasNext()) {
                FileItemStream item = iter.next();
                String itemName = item.getFieldName();
                InputStream itemStream = item.openStream();
                if (item.isFormField()) {
                    // Normal form item
                    // analog to ureq.getParameter in non-multipart mode
                    String value = Streams.asString(itemStream, "UTF-8");
                    addRequestParameter(itemName, value);
                } else {
                    // File item, store it to temp location
                    String fileName = item.getName();
                    // Cleanup IE filenames that are absolute
                    int slashpos = fileName.lastIndexOf("/");
                    if (slashpos != -1)
                        fileName = fileName.substring(slashpos + 1);
                    slashpos = fileName.lastIndexOf("\\");
                    if (slashpos != -1)
                        fileName = fileName.substring(slashpos + 1);

                    File tmpFile = new File(System.getProperty("java.io.tmpdir") + File.separator + "upload-"
                            + CodeHelper.getGlobalForeverUniqueID());

                    try {
                        FileUtils.save(itemStream, tmpFile);
                        // Only save non-empty file transfers, ignore empty transfers
                        // (e.g. already submitted in a previous form submit, not an error!)

                        // Removing empty file check for now ... was introduced to cope with
                        // browser trouble which probably is not there any more ...
                        // so empty fileName means nothing selected in the file element

                        // if (tmpFile.length() > 0) {
                        if (fileName.length() > 0) {
                            // a file was selected
                            // Save file and also original file name
                            requestMultipartFiles.put(itemName, tmpFile);
                            requestMultipartFileNames.put(itemName, fileName);
                            requestMultipartFileMimeTypes.put(itemName, item.getContentType());
                        } else {
                            if (tmpFile.exists())
                                tmpFile.delete();
                        }
                    } catch (OLATRuntimeException e) {
                        // Could not save stream for whatever reason, cleanup temp file and delegate exception
                        if (tmpFile.exists())
                            tmpFile.delete();

                        if (e.getCause() instanceof MalformedStreamException) {
                            logWarn("Could not read uploaded file >" + fileName
                                    + "< from stream. Possibly an attempt to upload a directory instead of a file (happens on Mac)",
                                    e);
                            return;
                        }

                        throw new OLATRuntimeException("Could not save uploaded file", e);
                    }
                }
            }
        } catch (SizeLimitExceededException sizeLimitExceededException) {
            logError("Error while dispatching multipart form: file limit (" + uploadSize + ") exceeded",
                    sizeLimitExceededException);
            requestError = REQUEST_ERROR_UPLOAD_LIMIT_EXCEEDED;
        } catch (IOException e) {
            logWarn("Error while dispatching multipart form: ioexception", e);
            requestError = REQUEST_ERROR_GENERAL;
        } catch (Exception e) {
            logError("Error while dispatching multipart form: general exception", e);
            requestError = REQUEST_ERROR_GENERAL;
        }
    } else {
        // Get parameters the standard way
        logDebug("Dispatching non-multipart form", null);
        Set<String> keys = ureq.getParameterSet();
        for (String key : keys) {
            String[] values = ureq.getHttpReq().getParameterValues(key);
            if (values != null) {
                requestParams.put(key, values);
            } else {
                addRequestParameter(key, ureq.getParameter(key));
            }
        }
    }
}

From source file:org.olat.restapi.support.MultipartReader.java

private final void apache(HttpServletRequest request, long uploadLimit) {
    ServletFileUpload uploadParser = new ServletFileUpload();
    uploadParser.setSizeMax((uploadLimit * 1024l) + 512000l);
    // Parse the request
    try {/*from   w ww.ja v  a2s. co m*/
        FileItemIterator iter = uploadParser.getItemIterator(request);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            String itemName = item.getFieldName();
            InputStream itemStream = item.openStream();
            if (item.isFormField()) {
                String value = Streams.asString(itemStream, "UTF-8");
                fields.put(itemName, value);
            } else {
                // File item, store it to temp location
                filename = item.getName();
                contentType = item.getContentType();

                if (filename != null) {
                    filename = UUID.randomUUID().toString().replace("-", "") + "_" + filename;
                } else {
                    filename = "upload-" + UUID.randomUUID().toString().replace("-", "");
                }
                file = new File(WebappHelper.getTmpDir(), filename);
                try {
                    save(itemStream, file);
                } catch (Exception e) {
                    log.error("", e);
                }
            }
        }
    } catch (Exception e) {
        log.error("", e);
    }
}

From source file:org.onecmdb.ui.gwt.desktop.server.command.ChangeUploadCommand.java

private void getFileItem(HttpServletRequest request) throws FileUploadException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if (!isMultipart) {
        throw new IllegalArgumentException("Not multipart...");
    }/*from w  w  w .  j a  va 2s.  c o  m*/

    ServletFileUpload upload = new ServletFileUpload();

    List<String> mdrEntries = new ArrayList<String>();

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

        String name = item.getFieldName();
        InputStream stream = item.openStream();
        if (item.isFormField()) {
            System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected.");
        } else {
            System.out.println("File field " + name + " with file name " + item.getName() + " detected.");
            // Process the input stream
        }
        String mdrEntry = handleInput(name, stream);
        mdrEntries.add(mdrEntry);
    }
    commitContent(mdrEntries);
}

From source file:org.onecmdb.ui.gwt.desktop.server.servlet.ContentServiceServlet.java

private void getFileItem(HttpServletRequest request, File root) throws FileUploadException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if (!isMultipart) {
        throw new IllegalArgumentException("Not multipart...");
    }//ww w .j  a  v  a2 s. c  o  m

    ServletFileUpload upload = new ServletFileUpload();

    // Parse the request
    FileItemIterator iter = upload.getItemIterator(request);

    String fileName = null;
    String path = null;
    while (iter.hasNext()) {
        FileItemStream item = iter.next();

        String name = item.getFieldName();
        InputStream stream = item.openStream();
        System.out.println("Name=" + item.getName());

        if (item.isFormField()) {
            String value = Streams.asString(stream);
            System.out.println("FormField " + name + "=" + value);
            if (name.equals("name")) {
                fileName = value;
            }
            if (name.equals("path")) {
                path = value;
            }

        } else {
            System.out.println("File field " + name + " with file name " + item.getName() + " detected.");

            File output = new File(root, path + "/" + fileName);
            System.out.println("Write upload to " + output.getPath());

            IOUtil.copyCompletely(stream, new FileOutputStream(output));
        }

    }
}

From source file:org.opencastproject.index.service.impl.IndexServiceImpl.java

@Override
public String createEvent(HttpServletRequest request)
        throws InternalServerErrorException, IllegalArgumentException {
    JSONObject metadataJson = null;/*from  w  ww  .  jav a  2 s  . c  o  m*/
    MediaPackage mp = null;
    try {
        if (ServletFileUpload.isMultipartContent(request)) {
            mp = getIngestService().createMediaPackage();

            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if (item.isFormField()) {
                    if ("metadata".equals(fieldName)) {
                        String metadata = Streams.asString(item.openStream());
                        try {
                            metadataJson = (JSONObject) parser.parse(metadata);
                        } catch (Exception e) {
                            logger.warn("Unable to parse metadata {}", metadata);
                            throw new IllegalArgumentException("Unable to parse metadata");
                        }
                    }
                } else {
                    if ("presenter".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                MediaPackageElements.PRESENTER_SOURCE, mp);
                    } else if ("presentation".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                MediaPackageElements.PRESENTATION_SOURCE, mp);
                    } else if ("audio".equals(item.getFieldName())) {
                        mp = getIngestService().addTrack(item.openStream(), item.getName(),
                                new MediaPackageElementFlavor("presenter-audio", "source"), mp);
                    } else {
                        logger.warn("Unknown field name found {}", item.getFieldName());
                    }
                }
            }
        } else {
            throw new IllegalArgumentException("No multipart content");
        }

        // MH-10834 If there is only an audio track, change the flavor from presenter-audio/source to presenter/source.
        if (mp.getTracks().length == 1 && mp.getTracks()[0].getFlavor()
                .equals(new MediaPackageElementFlavor("presenter-audio", "source"))) {
            Track audioTrack = mp.getTracks()[0];
            mp.remove(audioTrack);
            audioTrack.setFlavor(MediaPackageElements.PRESENTER_SOURCE);
            mp.add(audioTrack);
        }

        return createEvent(metadataJson, mp);
    } catch (Exception e) {
        logger.error("Unable to create event: {}", ExceptionUtils.getStackTrace(e));
        throw new InternalServerErrorException(e.getMessage());
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

protected Response addMediaPackageElement(HttpServletRequest request, MediaPackageElement.Type type) {
    MediaPackageElementFlavor flavor = null;
    try {//from   w w w. j  a v  a 2  s.  c  o m
        InputStream in = null;
        String fileName = null;
        MediaPackage mp = null;
        if (ServletFileUpload.isMultipartContent(request)) {
            boolean isDone = false;
            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if (item.isFormField()) {
                    if ("flavor".equals(fieldName)) {
                        String flavorString = Streams.asString(item.openStream());
                        if (flavorString != null) {
                            flavor = MediaPackageElementFlavor.parseFlavor(flavorString);
                        }
                    } else if ("mediaPackage".equals(fieldName)) {
                        mp = factory.newMediaPackageBuilder().loadFromXml(item.openStream());
                    }
                } else {
                    // once the body gets read iter.hasNext must not be invoked or the stream can not be read
                    // MH-9579
                    fileName = item.getName();
                    in = item.openStream();
                    isDone = true;
                }
                if (isDone) {
                    break;
                }
            }
            if (MediaPackageSupport.sanityCheck(mp).isSome())
                return Response.serverError().status(Status.BAD_REQUEST).build();
            switch (type) {
            case Attachment:
                mp = ingestService.addAttachment(in, fileName, flavor, mp);
                break;
            case Catalog:
                mp = ingestService.addCatalog(in, fileName, flavor, mp);
                break;
            case Track:
                mp = ingestService.addTrack(in, fileName, flavor, mp);
                break;
            default:
                throw new IllegalStateException("Type must be one of track, catalog, or attachment");
            }
            // ingestService.ingest(mp);
            return Response.ok(MediaPackageParser.getAsXml(mp)).build();
        }
        return Response.serverError().status(Status.BAD_REQUEST).build();
    } catch (Exception e) {
        logger.warn(e.getMessage(), e);
        return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

@POST
@Produces(MediaType.TEXT_XML)//from w  ww.ja v a2  s .  co  m
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("addMediaPackage/{wdID}")
@RestQuery(name = "addMediaPackage", description = "Create and ingest media package from media tracks with additional Dublin Core metadata. Notice: It is mandatory to set a title for the recording. This can be done with the 'title' form field or by supplying a DC catalog with a title included.", pathParameters = {
        @RestParameter(description = "Workflow definition id", isRequired = true, name = "wdID", type = RestParameter.Type.STRING) }, restParameters = {
                @RestParameter(description = "The kind of media track. This has to be specified in the request prior to each media track", isRequired = true, name = "flavor", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "abstract", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "accessRights", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "available", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "contributor", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "coverage", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "created", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "creator", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "date", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "description", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "extent", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "format", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "identifier", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isPartOf", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isReferencedBy", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "isReplacedBy", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "language", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "license", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "publisher", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "relation", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "replaces", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "rights", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "rightsHolder", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "source", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "spatial", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "subject", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "temporal", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "title", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode metadata value", isRequired = false, name = "type", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of episode DublinCore Catalog", isRequired = false, name = "episodeDCCatalogUri", type = RestParameter.Type.STRING),
                @RestParameter(description = "Episode DublinCore Catalog", isRequired = false, name = "episodeDCCatalog", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of series DublinCore Catalog", isRequired = false, name = "seriesDCCatalogUri", type = RestParameter.Type.STRING),
                @RestParameter(description = "Series DublinCore Catalog", isRequired = false, name = "seriesDCCatalog", type = RestParameter.Type.STRING),
                @RestParameter(description = "URL of a media track file", isRequired = false, name = "mediaUri", type = RestParameter.Type.STRING) }, bodyParameter = @RestParameter(description = "The media track file", isRequired = true, name = "BODY", type = RestParameter.Type.FILE), reponses = {
                        @RestResponse(description = "Returns augmented media package", responseCode = HttpServletResponse.SC_OK),
                        @RestResponse(description = "", responseCode = HttpServletResponse.SC_BAD_REQUEST),
                        @RestResponse(description = "", responseCode = HttpServletResponse.SC_INTERNAL_SERVER_ERROR) }, returnDescription = "")
public Response addMediaPackage(@Context HttpServletRequest request, @PathParam("wdID") String wdID) {
    MediaPackageElementFlavor flavor = null;
    try {
        MediaPackage mp = ingestService.createMediaPackage();
        DublinCoreCatalog dcc = null;
        Map<String, String> workflowProperties = new HashMap<String, String>();
        int seriesDCCatalogNumber = 0;
        int episodeDCCatalogNumber = 0;
        boolean hasMedia = false;
        if (ServletFileUpload.isMultipartContent(request)) {
            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                if (item.isFormField()) {
                    String fieldName = item.getFieldName();
                    String value = Streams.asString(item.openStream());
                    /* Ignore empty fields */
                    if ("".equals(value)) {
                        continue;
                    }

                    /* Remember? the flavor for the next media. */
                    if ("flavor".equals(fieldName)) {
                        flavor = MediaPackageElementFlavor.parseFlavor(value);

                        /* Fields for DC catalog */
                    } else if (dcterms.contains(fieldName)) {
                        if ("identifier".equals(fieldName)) {
                            /* Use the identifier for the mediapackage */
                            mp.setIdentifier(new IdImpl(value));
                        }
                        EName en = new EName(DublinCore.TERMS_NS_URI, fieldName);
                        if (dcc == null) {
                            dcc = dublinCoreService.newInstance();
                        }
                        dcc.add(en, value);

                        /* Episode metadata by URL */
                    } else if ("episodeDCCatalogUri".equals(fieldName)) {
                        try {
                            URI dcurl = new URI(value);
                            ingestService.addCatalog(dcurl, MediaPackageElements.EPISODE, mp);
                            episodeDCCatalogNumber += 1;
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }

                        /* Episode metadata DC catalog (XML) as string */
                    } else if ("episodeDCCatalog".equals(fieldName)) {
                        String fileName = "episode" + episodeDCCatalogNumber + ".xml";
                        episodeDCCatalogNumber += 1;
                        InputStream is = new ByteArrayInputStream(value.getBytes("UTF-8"));
                        ingestService.addCatalog(is, fileName, MediaPackageElements.EPISODE, mp);

                        /* Series by URL */
                    } else if ("seriesDCCatalogUri".equals(fieldName)) {
                        try {
                            URI dcurl = new URI(value);
                            ingestService.addCatalog(dcurl, MediaPackageElements.SERIES, mp);
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }

                        /* Series DC catalog (XML) as string */
                    } else if ("seriesDCCatalog".equals(fieldName)) {
                        String fileName = "series" + seriesDCCatalogNumber + ".xml";
                        seriesDCCatalogNumber += 1;
                        InputStream is = new ByteArrayInputStream(value.getBytes("UTF-8"));
                        ingestService.addCatalog(is, fileName, MediaPackageElements.SERIES, mp);

                        /* Add media files by URL */
                    } else if ("mediaUri".equals(fieldName)) {
                        if (flavor == null) {
                            /* A flavor has to be specified in the request prior the media file */
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }
                        URI mediaUrl;
                        try {
                            mediaUrl = new URI(value);
                        } catch (java.net.URISyntaxException e) {
                            /* Parameter was not a valid URL: Return 400 Bad Request */
                            logger.warn(e.getMessage(), e);
                            return Response.serverError().status(Status.BAD_REQUEST).build();
                        }
                        ingestService.addTrack(mediaUrl, flavor, mp);
                        hasMedia = true;

                    } else {
                        /* Tread everything else as workflow properties */
                        workflowProperties.put(fieldName, value);
                    }

                    /* Media files as request parameter */
                } else {
                    if (flavor == null) {
                        /* A flavor has to be specified in the request prior the video file */
                        return Response.serverError().status(Status.BAD_REQUEST).build();
                    }
                    ingestService.addTrack(item.openStream(), item.getName(), flavor, mp);
                    hasMedia = true;
                }
            }

            /* Check if we got any media. Fail if not. */
            if (!hasMedia) {
                logger.warn("Rejected ingest without actual media.");
                return Response.serverError().status(Status.BAD_REQUEST).build();
            }

            Catalog[] dccs = mp.getCatalogs(MediaPackageElements.EPISODE);
            for (int i = 0; i < dccs.length; i++) {
                EName en = new EName(DublinCore.TERMS_NS_URI, "identifier");
                String id = ((DublinCoreCatalog) dccs[i]).getFirst(en);
                if (id != null) {
                    mp.setIdentifier(new IdImpl(id));
                }
            }

            /* Add episode mediapackage if metadata were send separately */
            if (dcc != null) {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                dcc.toXml(out, true);
                InputStream in = new ByteArrayInputStream(out.toByteArray());
                ingestService.addCatalog(in, "dublincore.xml", MediaPackageElements.EPISODE, mp);

                /* Check if we have metadata for the episode */
            } else if (episodeDCCatalogNumber == 0) {
                logger.warn("Rejected ingest without episode metadata. At least provide a title.");
                return Response.serverError().status(Status.BAD_REQUEST).build();
            }

            WorkflowInstance workflow = (wdID == null) ? ingestService.ingest(mp)
                    : ingestService.ingest(mp, wdID, workflowProperties);
            return Response.ok(workflow).build();
        }
        return Response.serverError().status(Status.BAD_REQUEST).build();
    } catch (Exception e) {
        logger.warn(e.getMessage(), e);
        return Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build();
    }
}

From source file:org.opencastproject.ingest.endpoint.IngestRestService.java

/**
 * Add an elements to a MediaPackage and keeps track of the progress of the upload. Returns an HTML that triggers the
 * host sites UploadListener.uploadComplete javascript event Returns an HTML that triggers the host sites
 * UploadListener.uplaodFailed javascript event in case of error
 * /*w ww.j a v a2s .  com*/
 * @param jobId
 *          of the upload job
 * @param request
 *          containing the file, the flavor and the MediaPackage to which it should be added
 * @return HTML that calls the UploadListener.uploadComplete javascript handler
 */
@POST
@Path("addElementMonitored/{jobId}")
@Produces(MediaType.TEXT_HTML)
public Response addElementMonitored(@PathParam("jobId") String jobId, @Context HttpServletRequest request) {
    UploadJob job = null;
    MediaPackage mp = null;
    String fileName = null;
    MediaPackageElementFlavor flavor = null;
    String elementType = "track";
    EntityManager em = null;
    try {
        em = emf.createEntityManager();
        try { // try to get UploadJob, responde 404 if not successful
            // job = em.find(UploadJob.class, jobId);
            if (jobs.containsKey(jobId)) {
                job = jobs.get(jobId);
            } else {
                throw new NoResultException("Job not found");
            }
        } catch (NoResultException e) {
            logger.warn("Upload job not found for Id: " + jobId);
            return buildUploadFailedRepsonse(job);
        }
        if (ServletFileUpload.isMultipartContent(request)) {
            ServletFileUpload upload = new ServletFileUpload();
            UploadProgressListener listener = new UploadProgressListener(job, this.emf);
            upload.setProgressListener(listener);
            for (FileItemIterator iter = upload.getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                String fieldName = item.getFieldName();
                if ("mediaPackage".equalsIgnoreCase(fieldName)) {
                    mp = factory.newMediaPackageBuilder().loadFromXml(item.openStream());
                } else if ("flavor".equals(fieldName)) {
                    String flavorString = Streams.asString(item.openStream());
                    if (flavorString != null) {
                        flavor = MediaPackageElementFlavor.parseFlavor(flavorString);
                    }
                } else if ("elementType".equalsIgnoreCase(fieldName)) {
                    String typeString = Streams.asString(item.openStream());
                    if (typeString != null) {
                        elementType = typeString;
                    }
                } else if ("file".equalsIgnoreCase(fieldName)) {
                    fileName = item.getName();
                    job.setFilename(fileName);
                    if ((mp != null) && (flavor != null) && (fileName != null)) {
                        // decide which element type to add
                        if ("TRACK".equalsIgnoreCase(elementType)) {
                            mp = ingestService.addTrack(item.openStream(), fileName, flavor, mp);
                        } else if ("CATALOG".equalsIgnoreCase(elementType)) {
                            logger.info("Adding Catalog: " + fileName + " - " + flavor);
                            mp = ingestService.addCatalog(item.openStream(), fileName, flavor, mp);
                        }
                        InputStream is = null;
                        try {
                            is = getClass().getResourceAsStream("/templates/complete.html");
                            String html = IOUtils.toString(is, "UTF-8");
                            html = html.replaceAll("\\{mediaPackage\\}", MediaPackageParser.getAsXml(mp));
                            html = html.replaceAll("\\{jobId\\}", job.getId());
                            return Response.ok(html).build();
                        } finally {
                            IOUtils.closeQuietly(is);
                        }
                    }
                }
            }
        } else {
            logger.warn("Job " + job.getId() + ": message is not multipart/form-data encoded");
        }
        return buildUploadFailedRepsonse(job);
    } catch (Exception ex) {
        logger.error(ex.getMessage());
        return buildUploadFailedRepsonse(job);
    } finally {
        if (em != null)
            em.close();
    }
}

From source file:org.opencastproject.staticfiles.endpoint.StaticFileRestService.java

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)/*from  www. ja v a 2s  .co  m*/
@Path("")
@RestQuery(name = "postStaticFile", description = "Post a new static resource", bodyParameter = @RestParameter(description = "The static resource file", isRequired = true, name = "BODY", type = RestParameter.Type.FILE), reponses = {
        @RestResponse(description = "Returns the id of the uploaded static resource", responseCode = HttpServletResponse.SC_CREATED),
        @RestResponse(description = "No filename or file to upload found", responseCode = HttpServletResponse.SC_BAD_REQUEST),
        @RestResponse(description = "The upload size is too big", responseCode = HttpServletResponse.SC_BAD_REQUEST) }, returnDescription = "")
public Response postStaticFile(@Context HttpServletRequest request) {
    if (maxUploadSize > 0 && request.getContentLength() > maxUploadSize) {
        logger.warn("Preventing upload of static file as its size {} is larger than the max size allowed {}",
                request.getContentLength(), maxUploadSize);
        return Response.status(Status.BAD_REQUEST).build();
    }
    ProgressInputStream inputStream = null;
    try {
        String filename = null;
        if (ServletFileUpload.isMultipartContent(request)) {
            boolean isDone = false;
            for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
                FileItemStream item = iter.next();
                if (item.isFormField()) {
                    continue;
                } else {
                    logger.debug("Processing file item");
                    filename = item.getName();
                    inputStream = new ProgressInputStream(item.openStream());
                    inputStream.addPropertyChangeListener(new PropertyChangeListener() {
                        @Override
                        public void propertyChange(PropertyChangeEvent evt) {
                            long totalNumBytesRead = (Long) evt.getNewValue();
                            if (totalNumBytesRead > maxUploadSize) {
                                logger.warn("Upload limit of {} bytes reached, returning a bad request.",
                                        maxUploadSize);
                                throw new WebApplicationException(Status.BAD_REQUEST);
                            }
                        }
                    });
                    isDone = true;
                }
                if (isDone)
                    break;
            }
        } else {
            logger.warn("Request is not multi part request, returning a bad request.");
            return Response.status(Status.BAD_REQUEST).build();
        }

        if (filename == null) {
            logger.warn("Request was missing the filename, returning a bad request.");
            return Response.status(Status.BAD_REQUEST).build();
        }

        if (inputStream == null) {
            logger.warn("Request was missing the file, returning a bad request.");
            return Response.status(Status.BAD_REQUEST).build();
        }

        String uuid = staticFileService.storeFile(filename, inputStream);
        try {
            return Response.created(getStaticFileURL(uuid)).entity(uuid).build();
        } catch (NotFoundException e) {
            logger.error("Previous stored file with uuid {} couldn't beren found: {}", uuid,
                    ExceptionUtils.getStackTrace(e));
            return Response.serverError().build();
        }
    } catch (WebApplicationException e) {
        return e.getResponse();
    } catch (Exception e) {
        logger.error("Unable to store file because: {}", ExceptionUtils.getStackTrace(e));
        return Response.serverError().build();
    } finally {
        IOUtils.closeQuietly(inputStream);
    }
}

From source file:org.opencastproject.workingfilerepository.impl.WorkingFileRepositoryRestEndpoint.java

@POST
@Produces(MediaType.TEXT_HTML)//  www . j av  a2  s  .co m
@Path(WorkingFileRepository.MEDIAPACKAGE_PATH_PREFIX + "{mediaPackageID}/{mediaPackageElementID}")
@RestQuery(name = "put", description = "Store a file in working repository under ./mediaPackageID/mediaPackageElementID", returnDescription = "The URL to access the stored file", pathParameters = {
        @RestParameter(name = "mediaPackageID", description = "the mediapackage identifier", isRequired = true, type = STRING),
        @RestParameter(name = "mediaPackageElementID", description = "the mediapackage element identifier", isRequired = true, type = STRING) }, reponses = {
                @RestResponse(responseCode = SC_OK, description = "OK, file stored") }, restParameters = {
                        @RestParameter(name = "file", description = "the filename", isRequired = true, type = FILE) })
public Response restPut(@PathParam("mediaPackageID") String mediaPackageID,
        @PathParam("mediaPackageElementID") String mediaPackageElementID, @Context HttpServletRequest request)
        throws Exception {
    if (ServletFileUpload.isMultipartContent(request)) {
        for (FileItemIterator iter = new ServletFileUpload().getItemIterator(request); iter.hasNext();) {
            FileItemStream item = iter.next();
            if (item.isFormField()) {
                continue;

            }
            URI url = this.put(mediaPackageID, mediaPackageElementID, item.getName(), item.openStream());
            return Response.ok(url.toString()).build();
        }
    }
    return Response.serverError().status(400).build();
}