List of usage examples for org.apache.commons.fileupload FileItem delete
void delete();
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()); } }