Example usage for org.apache.commons.fileupload FileItem delete

List of usage examples for org.apache.commons.fileupload FileItem delete

Introduction

In this page you can find the example usage for org.apache.commons.fileupload FileItem delete.

Prototype

void delete();

Source Link

Document

Deletes the underlying storage for a file item, including deleting any associated temporary disk file.

Usage

From source file:org.rhq.enterprise.gui.coregui.server.gwt.FileUploadServlet.java

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

    HttpSession session = req.getSession();
    session.setMaxInactiveInterval(MAX_INACTIVE_INTERVAL);

    if (ServletFileUpload.isMultipartContent(req)) {

        DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
        //fileItemFactory.setSizeThreshold(0);

        ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);

        List<FileItem> fileItemsList;
        try {/*from   www .  j  ava2s.  co m*/
            fileItemsList = (List<FileItem>) servletFileUpload.parseRequest(req);
        } catch (FileUploadException e) {
            writeExceptionResponse(resp, "File upload failed", e);
            return;
        }

        List<FileItem> actualFiles = new ArrayList<FileItem>();
        Map<String, String> formFields = new HashMap<String, String>();
        boolean retrieve = false;
        Subject authenticatedSubject = null;

        for (FileItem fileItem : fileItemsList) {
            if (fileItem.isFormField()) {
                if (fileItem.getFieldName() != null) {
                    formFields.put(fileItem.getFieldName(), fileItem.getString());
                }
                if ("retrieve".equals(fileItem.getFieldName())) {
                    retrieve = true;
                } else if ("sessionid".equals(fileItem.getFieldName())) {
                    int sessionid = Integer.parseInt(fileItem.getString());
                    SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager();
                    try {
                        authenticatedSubject = subjectManager.getSubjectBySessionId(sessionid);
                    } catch (Exception e) {
                        throw new ServletException("Cannot authenticate request", e);
                    }
                }
                fileItem.delete();
            } else {
                // file item contains an actual uploaded file
                actualFiles.add(fileItem);
                log("file was uploaded: " + fileItem.getName());
            }
        }

        if (authenticatedSubject == null) {
            for (FileItem fileItem : actualFiles) {
                fileItem.delete();
            }
            throw new ServletException("Cannot process unauthenticated request");
        }

        if (retrieve && actualFiles.size() == 1) {
            // sending in "retrieve" form element with a single file means the client just wants the content echoed back
            FileItem fileItem = actualFiles.get(0);

            ServletOutputStream outputStream = resp.getOutputStream();
            outputStream.print("<html>");
            InputStream inputStream = fileItem.getInputStream();
            try {
                StreamUtil.copy(inputStream, outputStream, false);
            } finally {
                inputStream.close();
            }
            outputStream.print("</html>");
            outputStream.flush();

            fileItem.delete();
        } else {
            Map<String, File> allUploadedFiles = new HashMap<String, File>(); // maps form field name to the actual file
            Map<String, String> allUploadedFileNames = new HashMap<String, String>(); // maps form field name to upload file name
            for (FileItem fileItem : actualFiles) {
                File theFile = forceToFile(fileItem);
                allUploadedFiles.put(fileItem.getFieldName(), theFile);
                allUploadedFileNames.put(fileItem.getFieldName(),
                        (fileItem.getName() != null) ? fileItem.getName() : theFile.getName());
            }
            processUploadedFiles(authenticatedSubject, allUploadedFiles, allUploadedFileNames, formFields, req,
                    resp);
        }
    }
}

From source file:org.sakaiproject.util.RequestFilter.java

/**
 * If any of these files exist, delete them.
 *
 * @param tempFiles//  www .j a v a  2s .c om
 *        The file items to delete.
 */
protected void deleteTempFiles(List<FileItem> tempFiles) {
    for (FileItem item : tempFiles) {
        item.delete();
    }
}

From source file:org.seasar.cadhelin.MultipartRequestWrapper.java

public void closeFileItems() {
    for (FileItem fileItem : fileItems) {
        fileItem.delete();
    }
}

From source file:org.silverpeas.components.gallery.MediaUtil.java

/**
 * Saves uploaded sound file on file system
 * @param fileHandler the current session file handler
 * @param sound the current sound media//  ww  w.  j  a v a  2  s .c o m
 * @param fileItem the current uploaded sound
 * @throws Exception
 */
public static synchronized void processSound(final FileHandler fileHandler, Sound sound,
        final FileItem fileItem) throws Exception {
    if (fileItem != null) {
        String name = fileItem.getName();
        if (name != null) {
            try {
                sound.setFileName(StringUtil.normalize(FileUtil.getFilename(name)));
                final HandledFile handledSoundFile = getHandledFile(fileHandler, sound);
                handledSoundFile.copyInputStreamToFile(fileItem.getInputStream());
                new SoundProcess(handledSoundFile, sound).process();
            } finally {
                fileItem.delete();
            }
        }
    }
}

From source file:org.silverpeas.components.gallery.MediaUtil.java

/**
 * Saves uploaded video file on file system
 * @param fileHandler the current session file handler
 * @param video the current video media// w  w  w .  j  av a 2s .  c  o m
 * @param fileItem the current uploaded video
 * @throws Exception
 */
public static synchronized void processVideo(final FileHandler fileHandler, Video video,
        final FileItem fileItem) throws Exception {
    if (fileItem != null) {
        String name = fileItem.getName();
        if (name != null) {
            try {
                video.setFileName(StringUtil.normalize(FileUtil.getFilename(name)));
                final HandledFile handledVideoFile = getHandledFile(fileHandler, video);
                handledVideoFile.copyInputStreamToFile(fileItem.getInputStream());
                new VideoProcess(handledVideoFile, video).process();
            } finally {
                fileItem.delete();
            }
        }
    }
}

From source file:org.silverpeas.components.gallery.MediaUtil.java

/**
 * Saves uploaded photo file on file system with associated thumbnails and watermarks.
 * @param fileHandler the current session file handler
 * @param photo the photo media/*from   ww w  .j  a v a 2 s. c  o  m*/
 * @param image the image to register
 * @param watermark if watermark must be handled, the data are represented by this
 * {@link Watermark} instance.
 * @throws Exception on technical error.
 */
public static synchronized void processPhoto(final FileHandler fileHandler, final Photo photo,
        final FileItem image, final Watermark watermark) throws Exception {
    if (image != null) {
        String name = image.getName();
        if (name != null) {
            try {
                photo.setFileName(StringUtil.normalize(image.getName()));
                final HandledFile handledImageFile = getHandledFile(fileHandler, photo);
                handledImageFile.copyInputStreamToFile(image.getInputStream());
                new PhotoProcess(handledImageFile, photo, watermark).process();
            } finally {
                image.delete();
            }
        }
    }
}

From source file:org.silverpeas.web.upload.AjaxFileUploadServlet.java

/**
 * Do the effective upload of files./*from  w  w w  .ja  v  a 2  s.  c o  m*/
 *
 * @param session the HttpSession
 * @param request the multpart request
 * @throws IOException
 */
@SuppressWarnings("unchecked")
private void doFileUpload(HttpSession session, HttpServletRequest request) throws IOException {
    try {
        session.setAttribute(UPLOAD_ERRORS, "");
        session.setAttribute(UPLOAD_FATAL_ERROR, "");
        List<String> paths = new ArrayList<>();
        session.setAttribute(FILE_UPLOAD_PATHS, paths);
        FileUploadListener listener = new FileUploadListener(request.getContentLength());
        session.setAttribute(FILE_UPLOAD_STATS, listener.getFileUploadStats());
        FileItemFactory factory = new MonitoringFileItemFactory(listener);
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> items = upload.parseRequest(request);
        startingToSaveUploadedFile(session);
        String errorMessage = "";
        for (FileItem fileItem : items) {
            if (!fileItem.isFormField() && fileItem.getSize() > 0L) {
                try {
                    String filename = fileItem.getName();
                    if (filename.indexOf('/') >= 0) {
                        filename = filename.substring(filename.lastIndexOf('/') + 1);
                    }
                    if (filename.indexOf('\\') >= 0) {
                        filename = filename.substring(filename.lastIndexOf('\\') + 1);
                    }
                    if (!isInWhiteList(filename)) {
                        errorMessage += "The file " + filename + " is not uploaded!";
                        errorMessage += (StringUtil.isDefined(whiteList)
                                ? " Only " + whiteList.replaceAll(" ", ", ") + " file types can be uploaded<br>"
                                : " No allowed file format has been defined for upload<br>");
                        session.setAttribute(UPLOAD_ERRORS, errorMessage);
                    } else {
                        filename = System.currentTimeMillis() + "-" + filename;
                        File targetDirectory = new File(uploadDir, fileItem.getFieldName());
                        targetDirectory.mkdirs();
                        File uploadedFile = new File(targetDirectory, filename);
                        OutputStream out = null;
                        try {
                            out = new FileOutputStream(uploadedFile);
                            IOUtils.copy(fileItem.getInputStream(), out);
                            paths.add(uploadedFile.getParentFile().getName() + '/' + uploadedFile.getName());
                        } finally {
                            IOUtils.closeQuietly(out);
                        }
                    }
                } finally {
                    fileItem.delete();
                }
            }
        }
    } catch (Exception e) {
        getLogger(this).warn(e.getMessage());
        session.setAttribute(UPLOAD_FATAL_ERROR,
                "Could not process uploaded file. Please see log for details.");
    } finally {
        endingToSaveUploadedFile(session);
    }
}

From source file:org.tinygroup.weblayer.webcontext.parser.valueparser.impl.ParameterParserImpl.java

private void fileItemFilter(String key, boolean[] filtering, Object value, List<Object> paramValues) {
    FileItem fileItem = ((ItemFileObject) value).getFileItem();
    FileItem processFileItem = fileItem;
    // /*  w  w w .  j a v a  2  s  . com*/
    if (filtering != null) {
        for (int j = 0; j < filters.length; j++) {
            ParameterParserFilter filter = filters[j];

            if (filter instanceof UploadedFileFilter && filtering[j]) {
                processFileItem = ((UploadedFileFilter) filter).filter(key, processFileItem);
            }
        }
    }
    if (processFileItem == null) {
        remove(key, value);//?fileitem
        fileItems.remove(fileItem);
        fileItem.delete();
    } else {
        fileItem = processFileItem;
        if (!fileItem.isFormField() && fileItem.getContentType() != null) {//
            paramValues.add(value);
        }
    }
}

From source file:presentation.webgui.vitroappservlet.uploadService.UploadServlet.java

/**
 *
 * Needed because getParameter does not work with form enctype="multipart/form-data" (that uploads a file)
 *//* w w w  .  jav a2 s.  c o m*/
private FileItem myrequestGetParameter(ServletFileUpload upload, HttpServletRequest request,
        HashMap<String, String> myFileRequestParamsHM) {
    FileItem fileToReturn = null;
    try {
        List items = upload.parseRequest(request);
        for (Iterator i = items.iterator(); i.hasNext();) {
            FileItem fileItem = (FileItem) i.next();
            if (fileItem.isFormField()) {
                myFileRequestParamsHM.put(fileItem.getFieldName(), fileItem.getString());
                fileItem.delete();
            } else {
                fileToReturn = fileItem;
            }
        }
    } catch (Exception e) {
        return fileToReturn;
    }
    return fileToReturn;
}

From source file:presentation.webgui.vitroappservlet.uploadService.UploadServlet.java

private void doFileUpload(HttpSession session, HttpServletRequest request, HttpServletResponse response)
        throws IOException {

    String fname = "";
    HashMap<String, String> myFileRequestParamsHM = new HashMap<String, String>();

    try {//from  w w w .  ja v  a 2  s  . co  m
        FileUploadListener listener = new FileUploadListener(request.getContentLength());
        FileItemFactory factory = new MonitoredDiskFileItemFactory(listener);

        ServletFileUpload upload = new ServletFileUpload(factory);
        //        upload.setSizeMax(83886080); /* the unit is bytes */

        FileItem fileItem = null;
        fileItem = myrequestGetParameter(upload, request, myFileRequestParamsHM);

        String mode = myFileRequestParamsHM.get("mode");

        session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());

        boolean hasError = false;

        if (fileItem != null) {
            /**
             * (for KML only files) ( not prefabs (collada) or icons or images)
             */
            WstxInputFactory f = null;
            XMLStreamReader2 sr = null;
            SMInputCursor iroot = null;
            if (mode.equals("3dFile") || mode.equals("LinePlaceMarksFile")
                    || mode.equals("RoomCenterPointsFile")) {
                f = new WstxInputFactory();
                f.configureForConvenience();
                // Let's configure factory 'optimally'...
                f.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
                f.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);

                sr = (XMLStreamReader2) f.createXMLStreamReader(fileItem.getInputStream());
                iroot = SMInputFactory.rootElementCursor(sr);
                // If we needed to store some information about preceding siblings,
                // we should enable tracking. (we need it for  mygetElementValueStaxMultiple method)
                iroot.setElementTracking(SMInputCursor.Tracking.PARENTS);

                iroot.getNext();
                if (!"kml".equals(iroot.getLocalName().toLowerCase())) {
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "Root element not kml, as expected, but " + iroot.getLocalName());
                    return;
                }
            }

            fname = "";
            if (mode.equals("3dFile")) {
                if ((fileItem.getSize() / 1024) > 25096) { // with woodstox stax, file size should not be a problem. Let's put some limit however!
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "File is very large for XML handler to process!");
                    return;
                }

                fname = "";
                String[] elementsToFollow = { "document", "name" };
                Vector<String> resultValues = SMTools.mygetElementValueStax(iroot, elementsToFollow, 0);
                if (resultValues != null && !resultValues.isEmpty()) {
                    fname = resultValues.elementAt(0);
                }

                if (!fname.equals("")) {
                    // check for kml extension and Add it if necessary!!
                    int lastdot = fname.lastIndexOf('.');
                    if (lastdot != -1) {
                        if (lastdot == 0) // if it is the first char then ignore it and add an extension anyway
                        {
                            fname += ".kml";
                        } else if (lastdot < fname.length() - 1) {
                            if (!(fname.substring(lastdot + 1).toLowerCase().equals("kml"))) {
                                fname += ".kml";
                            }
                        } else if (lastdot == fname.length() - 1) {
                            fname += "kml";
                        }
                    } else {
                        fname += ".kml";
                    }

                    String realPath = this.getServletContext().getRealPath("/");
                    int lastslash = realPath.lastIndexOf(File.separator);
                    realPath = realPath.substring(0, lastslash);
                    // too slow
                    //FileWriter out = new FileWriter(realPath+File.separator+"KML"+File.separator+fname);
                    //document.sendToWriter(out);
                    // too slow
                    //StringWriter outString = new StringWriter();
                    //document.sendToWriter(outString);
                    //out.close();

                    // fast - do not process and store xml file, just store it.
                    File outFile = new File(realPath + File.separator + "Models" + File.separator + "Large"
                            + File.separator + fname);
                    outFile.createNewFile();
                    FileWriter tmpoutWriter = new FileWriter(outFile);
                    BufferedWriter buffWriter = new BufferedWriter(tmpoutWriter);
                    buffWriter.write(new String(fileItem.get()));
                    buffWriter.flush();
                    buffWriter.close();
                    tmpoutWriter.close();
                } else {
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "No name tag found inside the KML file!");
                    return;
                }
            } else if (mode.equals("LinePlaceMarksFile")) {
                fname = "";
                String[] elementsToFollow = { "document", "folder", "placemark", "point", "coordinates" };
                Vector<String> resultValues = SMTools.mygetElementValueStax(iroot, elementsToFollow, 0);
                if (resultValues != null && resultValues.size() < 2) {
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "File does not contain 2 placemarks!");
                    return;
                }

                for (int i = 0; (i < resultValues.size()) && (i < 2); i++) {
                    fname = fname + ":" + resultValues.elementAt(i);
                }
            } else if (mode.equals("RoomCenterPointsFile")) {
                fname = "";
                // here: process PlaceMarks for rooms (centerpoints) in the building
                String[] elementsToFollow0 = { "document", "folder", "placemark", "point", "coordinates" };
                String[] elementsToFollow1 = { "document", "folder", "placemark", "name" };
                // add elements to follow for room names and coordinates        
                Vector<String[]> elementsToFollow = new Vector<String[]>();
                elementsToFollow.add(elementsToFollow0);
                elementsToFollow.add(elementsToFollow1);
                Vector<Vector<String>> resultValues = new Vector<Vector<String>>();
                SMTools.mygetMultipleElementValuesStax(iroot, elementsToFollow, resultValues);

                Vector<String> resultValuesForCoords = resultValues.elementAt(0);
                Vector<String> resultValuesForNames = resultValues.elementAt(1);

                if (resultValuesForCoords == null || resultValuesForCoords.size() == 0
                        || resultValuesForNames == null || resultValuesForCoords.size() == 0
                        || resultValuesForCoords.size() != resultValuesForNames.size()) {
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "File does not contain valid data for rooms!");
                    return;
                }

                for (int i = 0; i < resultValuesForNames.size(); i++) {
                    // since we use ;  and ':' to seperate rooms, we replace the comma's in the rooms' names.
                    if (resultValuesForNames.elementAt(i).indexOf(';') >= 0
                            || resultValuesForNames.elementAt(i).indexOf(':') >= 0) {
                        String tmp = new String(resultValuesForNames.elementAt(i));
                        tmp.replace(';', ' ');
                        tmp.replace(':', ' ');
                        resultValuesForNames.set(i, tmp);
                    }
                    fname = fname + ";" + resultValuesForNames.elementAt(i) + ":"
                            + resultValuesForCoords.elementAt(i);
                }

            } else if (mode.equals("DefaultIconfile") || mode.equals("DefaultPrefabfile")
                    || mode.equals("SpecialValueIconfile") || mode.equals("SpecialValuePrefabfile")
                    || mode.equals("NumericRangeIconfile") || mode.equals("NumericRangePrefabfile")) {
                fname = "";
                if ((fileItem.getSize() / 1024) > 10096) { // no more than 10 Mbs of size for small prefabs or icons
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError, "File is very large!");
                    return;
                }
                fname = fileItem.getName();
                if (!fname.equals("")) {
                    String realPath = this.getServletContext().getRealPath("/");
                    int lastslash = realPath.lastIndexOf(File.separator);
                    realPath = realPath.substring(0, lastslash);

                    File outFile = new File(realPath + File.separator + "Models" + File.separator + "Media"
                            + File.separator + fname);
                    outFile.createNewFile();
                    /*
                    FileWriter tmpoutWriter = new FileWriter(outFile);
                    BufferedWriter buffWriter = new BufferedWriter(tmpoutWriter);                      
                    buffWriter.write(new String(fileItem.get()));
                    buffWriter.flush();
                    buffWriter.close();
                    tmpoutWriter.close();
                    */
                    fileItem.write(outFile);
                } else {
                    hasError = true;
                    listener.getFileUploadStats().setCurrentStatus("finito");
                    session.setAttribute("FILE_UPLOAD_STATS" + mode, listener.getFileUploadStats());
                    sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                            "No valid name for uploaded file!");
                    return;
                }
            }

            fileItem.delete();
        }

        if (!hasError) {
            sendCompleteResponse(myFileRequestParamsHM, response, hasError, fname);
        } else {
            hasError = true;
            sendCompleteResponse(myFileRequestParamsHM, response, hasError,
                    "Could not process uploaded file. Please see log for details.");
        }
    } catch (Exception e) {
        boolean hasError = true;
        sendCompleteResponse(myFileRequestParamsHM, response, hasError, "::" + fname + "::" + e.getMessage());
    }
}