List of usage examples for org.apache.commons.fileupload.servlet ServletFileUpload getItemIterator
public FileItemIterator getItemIterator(HttpServletRequest request) throws FileUploadException, IOException
From source file:com.google.dotorg.translation_workflow.servlet.UploadServlet.java
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, MalformedURLException { String rawProjectId = request.getParameter("projectId"); try {/*from w w w .j ava 2s. com*/ ServletFileUpload upload = new ServletFileUpload(); upload.setSizeMax(1048576); UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); Cloud cloud = Cloud.open(); int projectId = Integer.parseInt(rawProjectId); Project project = cloud.getProjectById(projectId); TextValidator nameValidator = TextValidator.BRIEF_STRING; String invalidRows = ""; int validRows = 0; try { FileItemIterator iterator = upload.getItemIterator(request); int articlesLength = 0; while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream in = item.openStream(); if (item.isFormField()) { } else { String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); String fileContents = null; if (!contentType.equalsIgnoreCase("text/csv")) { logger.warning("Invalid filetype upload " + contentType); response.sendRedirect( "/project_overview?project=" + rawProjectId + "&msg=invalid_type"); } try { fileContents = IOUtils.toString(in); PersistenceManager pm = cloud.getPersistenceManager(); Transaction tx = pm.currentTransaction(); tx.begin(); String[] lines = fileContents.split("\n"); List<Translation> newTranslations = new ArrayList<Translation>(); articlesLength = lines.length; validRows = articlesLength; int lineNo = 0; for (String line : lines) { lineNo++; line = line.replaceAll("\",", "\";"); line = line.replaceAll("\"", ""); String[] fields = line.split(";"); String articleName = fields[0].replace("_", " "); articleName = nameValidator.filter(URLDecoder.decode(articleName)); try { URL url = new URL(fields[1]); String category = ""; String difficulty = ""; if (fields.length > 2) { category = nameValidator.filter(fields[2]); } if (fields.length > 3) { difficulty = nameValidator.filter(fields[3]); } Translation translation = project.createTranslation(articleName, url.toString(), category, difficulty); newTranslations.add(translation); } catch (MalformedURLException e) { validRows--; invalidRows = invalidRows + "," + lineNo; logger.warning("Invalid URL : " + fields[1]); } } pm.makePersistentAll(newTranslations); tx.commit(); } finally { IOUtils.closeQuietly(in); } } } cloud.close(); logger.info(validRows + " of " + articlesLength + " articles uploaded from csv to the project " + project.getId() + " by User :" + user.getUserId()); if (invalidRows.length() > 0) { response.sendRedirect( "/project_overview?project=" + rawProjectId + "&_invalid=" + invalidRows.substring(1)); } else { response.sendRedirect("/project_overview?project=" + rawProjectId); } /*response.sendRedirect("/project_overview?project=" + rawProjectId + "&_invalid=" + invalidRows.substring(1));*/ } catch (SizeLimitExceededException e) { logger.warning("Exceeded the maximum size (" + e.getPermittedSize() + ") of the file (" + e.getActualSize() + ")"); response.sendRedirect("/project_overview?project=" + rawProjectId + "&msg=size_exceeded"); } } catch (Exception ex) { logger.info("String " + ex.toString()); throw new ServletException(ex); } }
From source file:edu.stanford.epad.epadws.handlers.dicom.DSOUtil.java
public static boolean handleDSOFramesEdit(String projectID, String subjectID, String studyUID, String seriesUID, String imageUID, HttpServletRequest httpRequest, PrintWriter responseStream) { // See http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm boolean uploadError = false; log.info("Received DSO edit request for series " + seriesUID); String confirm = dcm4CheeDatabaseOperations.getSeriesUIDForImage(imageUID); //ml if ui do not know series uid (new dso) if (seriesUID.equals("*")) { seriesUID = confirm;/*from ww w. ja v a2s.c om*/ } //ml if ui do not know study uid (new dso) if (studyUID.equals("*")) { studyUID = dcm4CheeDatabaseOperations.getStudyUIDForSeries(seriesUID); } if (!confirm.equals(seriesUID)) { log.warning("Invalid ImageUID for series:" + seriesUID); return true; } try { ServletFileUpload servletFileUpload = new ServletFileUpload(); FileItemIterator fileItemIterator = servletFileUpload.getItemIterator(httpRequest); DSOEditRequest dsoEditRequest = null; String editedFrameNumbers = httpRequest.getParameter("editedFrameNumbers"); if (editedFrameNumbers == null || editedFrameNumbers.length() == 0) { dsoEditRequest = extractDSOEditRequest(fileItemIterator); //ui doesn't send editedFrameNumbers, but the series uid is * if (dsoEditRequest.seriesUID.equals("*")) { dsoEditRequest.seriesUID = confirm; } if (dsoEditRequest.studyUID.equals("*")) { dsoEditRequest.studyUID = dcm4CheeDatabaseOperations.getStudyUIDForSeries(seriesUID); } } else { log.info("Uploaded mask frame numbers:" + editedFrameNumbers); String[] frameNumbers = editedFrameNumbers.split(","); List<Integer> numbers = new ArrayList<Integer>(); for (String frameNumber : frameNumbers) { if (frameNumber.trim().length() == 0) continue; numbers.add(new Integer(frameNumber.trim())); } dsoEditRequest = new DSOEditRequest(projectID, subjectID, studyUID, seriesUID, imageUID, httpRequest.getParameter("aimID"), numbers); } if (dsoEditRequest != null) { //need to pass this all the way to segmentation writer, put into edit request String property = httpRequest.getParameter("property"); String color = httpRequest.getParameter("color"); dsoEditRequest.property = property; dsoEditRequest.color = color; log.info("DSOEditRequest, imageUID:" + dsoEditRequest.imageUID + " aimID:" + dsoEditRequest.aimID + " number Frames:" + dsoEditRequest.editedFrameNumbers.size()); EpadDatabaseOperations epadDatabaseOperations = EpadDatabase.getInstance() .getEPADDatabaseOperations(); String username = httpRequest.getParameter("username"); EPADAIM aim = epadDatabaseOperations.getAIM(dsoEditRequest.aimID); if (aim != null && username != null) { EpadProjectOperations projectOperations = DefaultEpadProjectOperations.getInstance(); if (!projectOperations.isAdmin(username) && !username.equals(aim.userName) && !projectOperations.isOwner(username, projectID)) { log.warning("No permissions to update AIM:" + aim.aimID + " for user " + username); throw new Exception("No permissions to update AIM:" + aim.aimID + " for user " + username); } } List<File> editedFramesPNGMaskFiles = HandlerUtil.extractFiles(fileItemIterator, "DSOEditedFrame", ".PNG"); if (editedFramesPNGMaskFiles.isEmpty()) { log.warning("No PNG masks supplied in DSO edit request for image " + imageUID + " in series " + seriesUID); uploadError = true; } else { log.info("Extracted " + editedFramesPNGMaskFiles.size() + " file mask(s) for DSO edit for image " + imageUID + " in series " + seriesUID); if (editedFramesPNGMaskFiles.size() != dsoEditRequest.editedFrameNumbers.size()) throw new IOException("Number of files and frames number do not match"); // if (aim != null && (aim.dsoFrameNo == 0 || aim.dsoFrameNo < dsoEditRequest.editedFrameNumbers.get(0))) { // aim.dsoFrameNo = dsoEditRequest.editedFrameNumbers.get(0); // epadDatabaseOperations.updateAIMDSOFrameNo(aim.aimID, aim.dsoFrameNo); // } DSOEditResult dsoEditResult = DSOUtil.createEditedDSO(dsoEditRequest, editedFramesPNGMaskFiles, aim.seriesUID); if (dsoEditResult != null) { log.info("Copying edited frame pngs: " + dsoEditRequest.editedFrameNumbers.size()); for (int i = 0; i < dsoEditRequest.editedFrameNumbers.size(); i++) { Integer frameNumber = dsoEditRequest.editedFrameNumbers.get(i); String pngMaskDirectoryPath = baseDicomDirectory + "/studies/" + studyUID + "/series/" + seriesUID + "/images/" + imageUID + "/masks/"; String pngMaskFilePath = pngMaskDirectoryPath + frameNumber + ".png"; EPADFileUtils.copyFile(editedFramesPNGMaskFiles.get(i), new File(pngMaskFilePath)); editedFramesPNGMaskFiles.get(i).delete(); } if (dsoEditResult.aimID != null && dsoEditResult.aimID.length() > 0) { if (dsoEditResult.firstFrame != null) { log.info("update aim table dso first frame with " + dsoEditResult.firstFrame + "for aim " + dsoEditResult.aimID); epadDatabaseOperations.updateAIMDSOFrameNo(dsoEditResult.aimID, dsoEditResult.firstFrame); } List<ImageAnnotation> aims = AIMQueries.getAIMImageAnnotations( AIMSearchType.ANNOTATION_UID, dsoEditResult.aimID, "admin"); if (aims.size() > 0) { log.info("DSO Annotation: " + dsoEditResult.aimID); // String sessionID = XNATSessionOperations.getJSessionIDFromRequest(httpRequest); // ImageAnnotation imageAnnotation = aims.get(0); // PluginAIMUtil.addSegmentToImageAnnotation(imageAnnotation.getSegmentationCollection().getSegmentationList().get(0).getSopClassUID(), dsoEditResult.imageUID, imageAnnotation.getSegmentationCollection().getSegmentationList().get(0).getReferencedSopInstanceUID(), // imageAnnotation); // DICOMImageReference dsoDICOMImageReference = PluginAIMUtil.createDICOMImageReference(dsoEditResult.studyUID, dsoEditResult.seriesUID, // dsoEditResult.imageUID); // imageAnnotation.addImageReference(dsoDICOMImageReference); // try { // AIMUtil.saveImageAnnotationToServer(imageAnnotation, sessionID); // } catch (AimException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } catch (edu.stanford.hakan.aim4api.base.AimException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } } responseStream.append(dsoEditResult.toJSON()); } else { log.info("Null return from createEditDSO"); uploadError = true; } } } else { log.warning("Invalid JSON header in DSO edit request for image " + imageUID + " in series " + seriesUID); uploadError = true; } } catch (IOException e) { log.warning("IO exception handling DSO edits for series " + seriesUID, e); uploadError = true; } catch (FileUploadException e) { log.warning("File upload exception handling DSO edits for series " + seriesUID, e); uploadError = true; } catch (Exception e) { log.warning("Exception handling DSO edits for series " + seriesUID, e); uploadError = true; } if (!uploadError) log.info("DSO successfully edited"); return uploadError; }
From source file:ai.ilikeplaces.servlets.ServletFileUploads.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * * @param request__//from www . ja v a2 s.com * @param response__ * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(final HttpServletRequest request__, final HttpServletResponse response__) throws ServletException, IOException { response__.setContentType("text/html;charset=UTF-8"); Loggers.DEBUG.debug(logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0020"), request__.getLocale()); PrintWriter out = response__.getWriter(); final ResourceBundle gUI = PropertyResourceBundle.getBundle("ai.ilikeplaces.rbs.GUI"); try { fileUpload: { if (!isFileUploadPermitted()) { errorTemporarilyDisabled(out); break fileUpload; } processSignOn: { final HttpSession session = request__.getSession(false); if (session == null) { errorNoLogin(out); break fileUpload; } else if (session.getAttribute(ServletLogin.HumanUser) == null) { errorNoLogin(out); break processSignOn; } processRequestType: { @SuppressWarnings("unchecked") final HumanUserLocal sBLoggedOnUserLocal = ((SessionBoundBadRefWrapper<HumanUserLocal>) session .getAttribute(ServletLogin.HumanUser)).getBoundInstance(); try { /*Check that we have a file upload request*/ final boolean isMultipart = ServletFileUpload.isMultipartContent(request__); if (!isMultipart) { LoggerFactory.getLogger(ServletFileUploads.class.getName()).error( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0001")); errorNonMultipart(out); break processRequestType; } processRequest: { // Create a new file upload handler final ServletFileUpload upload = new ServletFileUpload(); // Parse the request FileItemIterator iter = upload.getItemIterator(request__); boolean persisted = false; loop: { Long locationId = null; String photoDescription = null; String photoName = null; Boolean isPublic = null; Boolean isPrivate = null; boolean fileSaved = false; while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); String absoluteFileSystemFileName = FilePath; InputStream stream = item.openStream(); @_fix(issue = "Handle no extension files") String usersFileName = null; String randomFileName = null; if (item.isFormField()) { final String value = Streams.asString(stream); Loggers.DEBUG.debug( logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0002"), name); Loggers.DEBUG.debug( logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0003"), value); if (name.equals("locationId")) { locationId = Long.parseLong(value); Loggers.DEBUG.debug((logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0004"))); } if (name.equals("photoDescription")) { photoDescription = value; Loggers.DEBUG.debug((logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0005"))); } if (name.equals("photoName")) { photoName = value; Loggers.DEBUG.debug((logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0006"))); } if (name.equals("isPublic")) { if (!(value.equals("true") || value.equals("false"))) { throw new IllegalArgumentException(logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0007") + value); } isPublic = Boolean.valueOf(value); Loggers.DEBUG.debug((logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0008"))); } if (name.equals("isPrivate")) { if (!(value.equals("true") || value.equals("false"))) { throw new IllegalArgumentException(logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0007") + value); } isPrivate = Boolean.valueOf(value); Loggers.DEBUG.debug("HELLO, I PROPERLY RECEIVED photoName."); } } if ((!item.isFormField())) { Loggers.DEBUG.debug((logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0009") + name)); Loggers.DEBUG.debug((logMsgs .getString("ai.ilikeplaces.servlets.ServletFileUploads.0010") + item.getName())); // Process the input stream if (!(item.getName().lastIndexOf(".") > 0)) { errorFileType(out, item.getName()); break processRequest; } usersFileName = (item.getName().indexOf("\\") <= 1 ? item.getName() : item.getName() .substring(item.getName().lastIndexOf("\\") + 1)); final String userUploadedFileName = item.getName(); String fileExtension = "error"; if (userUploadedFileName.toLowerCase().endsWith(".jpg")) { fileExtension = ".jpg"; } else if (userUploadedFileName.toLowerCase().endsWith(".jpeg")) { fileExtension = ".jpeg"; } else if (userUploadedFileName.toLowerCase().endsWith(".png")) { fileExtension = ".png"; } else { errorFileType(out, gUI.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0019")); break processRequest; } randomFileName = getRandomFileName(locationId); randomFileName += fileExtension; final File uploadedFile = new File( absoluteFileSystemFileName += randomFileName); final FileOutputStream fos = new FileOutputStream(uploadedFile); while (true) { final int dataByte = stream.read(); if (dataByte != -1) { fos.write(dataByte); } else { break; } } fos.close(); stream.close(); fileSaved = true; } Loggers.DEBUG.debug( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0011") + locationId); Loggers.DEBUG.debug( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0012") + fileSaved); Loggers.DEBUG.debug( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0013") + photoDescription); Loggers.DEBUG.debug( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0014") + photoName); Loggers.DEBUG.debug( logMsgs.getString("ai.ilikeplaces.servlets.ServletFileUploads.0015") + isPublic); if (fileSaved && (photoDescription != null)) { persistData: { handlePublicPrivateness: { if ((isPublic != null) && isPublic && (locationId != null)) { Return<PublicPhoto> r = DB .getHumanCRUDPublicPhotoLocal(true) .cPublicPhoto(sBLoggedOnUserLocal.getHumanUserId(), locationId, absoluteFileSystemFileName, photoName, photoDescription, new String(CDN + randomFileName), 4); if (r.returnStatus() == 0) { successFileName(out, usersFileName, logMsgs.getString( "ai.ilikeplaces.servlets.ServletFileUploads.0016")); } else { errorBusy(out); } } else if ((isPrivate != null) && isPrivate) { Return<PrivatePhoto> r = DB .getHumanCRUDPrivatePhotoLocal(true) .cPrivatePhoto(sBLoggedOnUserLocal.getHumanUserId(), absoluteFileSystemFileName, photoName, photoDescription, new String(CDN + randomFileName)); if (r.returnStatus() == 0) { successFileName(out, usersFileName, "private"); } else { errorBusy(out); } } else { throw UNSUPPORTED_OPERATION_EXCEPTION; } } } /*We got what we need from the loop. Lets break it*/ break loop; } } } if (!persisted) { errorMissingParameters(out); break processRequest; } } } catch (FileUploadException ex) { Loggers.EXCEPTION.error(null, ex); errorBusy(out); } } } } } catch (final Throwable t_) { Loggers.EXCEPTION.error("SORRY! I ENCOUNTERED AN EXCEPTION DURING THE FILE UPLOAD", t_); } }
From source file:com.webpagebytes.cms.controllers.FileController.java
public void uploadFolder(HttpServletRequest request, HttpServletResponse response, String requestUri) throws WPBException { try {//from ww w . jav a 2 s.c om ServletFileUpload upload = new ServletFileUpload(); upload.setHeaderEncoding("UTF-8"); FileItemIterator iterator = upload.getItemIterator(request); WPBFile ownerFile = null; Map<String, WPBFile> subfolderFiles = new HashMap<String, WPBFile>(); while (iterator.hasNext()) { FileItemStream item = iterator.next(); if (item.isFormField() && item.getFieldName().equals("ownerExtKey")) { String ownerExtKey = Streams.asString(item.openStream()); ownerFile = getDirectory(ownerExtKey, adminStorage); } else if (!item.isFormField() && item.getFieldName().equals("file")) { String fullName = item.getName(); String directoryPath = getDirectoryFromLongName(fullName); String fileName = getFileNameFromLongName(fullName); Map<String, WPBFile> tempSubFolders = checkAndCreateSubDirectory(directoryPath, ownerFile); subfolderFiles.putAll(tempSubFolders); // delete the existing file WPBFile existingFile = getFileFromDirectory(subfolderFiles.get(directoryPath), fileName); if (existingFile != null) { deleteFile(existingFile, 0); } // create the file WPBFile file = new WPBFile(); file.setExternalKey(adminStorage.getUniqueId()); file.setFileName(fileName); file.setLastModified(Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime()); file.setDirectoryFlag(0); addFileToDirectory(subfolderFiles.get(directoryPath), file, item.openStream()); } } org.json.JSONObject returnJson = new org.json.JSONObject(); returnJson.put(DATA, jsonObjectConverter.JSONFromObject(null)); httpServletToolbox.writeBodyResponseAsJson(response, returnJson, null); } catch (Exception e) { Map<String, String> errors = new HashMap<String, String>(); errors.put("", WPBErrors.WB_CANT_UPDATE_RECORD); httpServletToolbox.writeBodyResponseAsJson(response, jsonObjectConverter.JSONObjectFromMap(null), errors); } }
From source file:com.webpagebytes.cms.controllers.FileController.java
public void upload(HttpServletRequest request, HttpServletResponse response, String requestUri) throws WPBException { try {//from w w w . ja v a 2s .c om ServletFileUpload upload = new ServletFileUpload(); upload.setHeaderEncoding("UTF-8"); FileItemIterator iterator = upload.getItemIterator(request); WPBFile ownerFile = null; while (iterator.hasNext()) { FileItemStream item = iterator.next(); if (item.isFormField() && item.getFieldName().equals("ownerExtKey")) { String ownerExtKey = Streams.asString(item.openStream()); ownerFile = getDirectory(ownerExtKey, adminStorage); } else if (!item.isFormField() && item.getFieldName().equals("file")) { InputStream stream = item.openStream(); WPBFile wbFile = null; String fileName = getFileNameFromLongName(item.getName()); if (request.getAttribute("key") != null) { // this is an upload as update for an existing file Long key = Long.valueOf((String) request.getAttribute("key")); wbFile = adminStorage.get(key, WPBFile.class); ownerFile = getDirectory(wbFile.getOwnerExtKey(), adminStorage); //old file need to be deleted from cloud String oldFilePath = wbFile.getBlobKey(); if (oldFilePath != null && oldFilePath.length() > 0) { // delete only if the blob key is set WPBFilePath oldCloudFile = new WPBFilePath(PUBLIC_BUCKET, oldFilePath); cloudFileStorage.deleteFile(oldCloudFile); } } else { // this is a new upload wbFile = new WPBFile(); wbFile.setExternalKey(adminStorage.getUniqueId()); } wbFile.setFileName(fileName); wbFile.setLastModified(Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime()); wbFile.setDirectoryFlag(0); addFileToDirectory(ownerFile, wbFile, stream); } } org.json.JSONObject returnJson = new org.json.JSONObject(); returnJson.put(DATA, jsonObjectConverter.JSONFromObject(null)); httpServletToolbox.writeBodyResponseAsJson(response, returnJson, null); } catch (Exception e) { Map<String, String> errors = new HashMap<String, String>(); errors.put("", WPBErrors.WB_CANT_UPDATE_RECORD); httpServletToolbox.writeBodyResponseAsJson(response, jsonObjectConverter.JSONObjectFromMap(null), errors); } }
From source file:com.zimbra.cs.service.UserServletContext.java
public InputStream getRequestInputStream(long limit) throws IOException, ServiceException, UserServletException { String contentType = MimeConstants.CT_APPLICATION_OCTET_STREAM; String filename = null;//from ww w . jav a 2 s . c om InputStream is = null; final long DEFAULT_MAX_SIZE = 10 * 1024 * 1024; if (limit == 0) { if (req.getParameter("lbfums") != null) { limit = Provisioning.getInstance().getLocalServer() .getLongAttr(Provisioning.A_zimbraFileUploadMaxSize, DEFAULT_MAX_SIZE); } else { limit = Provisioning.getInstance().getConfig().getLongAttr(Provisioning.A_zimbraMtaMaxMessageSize, DEFAULT_MAX_SIZE); } } boolean doCsrfCheck = false; if (req.getAttribute(CsrfFilter.CSRF_TOKEN_CHECK) != null) { doCsrfCheck = (Boolean) req.getAttribute(CsrfFilter.CSRF_TOKEN_CHECK); } if (ServletFileUpload.isMultipartContent(req)) { ServletFileUpload sfu = new ServletFileUpload(); try { FileItemIterator iter = sfu.getItemIterator(req); while (iter.hasNext()) { FileItemStream fis = iter.next(); if (fis.isFormField()) { is = fis.openStream(); params.put(fis.getFieldName(), new String(ByteUtil.getContent(is, -1), "UTF-8")); if (doCsrfCheck && !this.csrfAuthSucceeded) { String csrfToken = params.get(FileUploadServlet.PARAM_CSRF_TOKEN); if (UserServlet.log.isDebugEnabled()) { String paramValue = req.getParameter(UserServlet.QP_AUTH); UserServlet.log.debug( "CSRF check is: %s, CSRF token is: %s, Authentication recd with request is: %s", doCsrfCheck, csrfToken, paramValue); } if (!CsrfUtil.isValidCsrfToken(csrfToken, authToken)) { setCsrfAuthSucceeded(Boolean.FALSE); UserServlet.log.debug( "CSRF token validation failed for account: %s" + ", Auth token is CSRF enabled: %s" + "CSRF token is: %s", authToken, authToken.isCsrfTokenEnabled(), csrfToken); throw new UserServletException(HttpServletResponse.SC_UNAUTHORIZED, L10nUtil.getMessage(MsgKey.errMustAuthenticate)); } else { setCsrfAuthSucceeded(Boolean.TRUE); } } is.close(); is = null; } else { is = new UploadInputStream(fis.openStream(), limit); break; } } } catch (UserServletException e) { throw new UserServletException(e.getHttpStatusCode(), e.getMessage(), e); } catch (Exception e) { throw new UserServletException(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, e.toString()); } if (is == null) throw new UserServletException(HttpServletResponse.SC_NO_CONTENT, "No file content"); } else { ContentType ctype = new ContentType(req.getContentType()); String contentEncoding = req.getHeader("Content-Encoding"); contentType = ctype.getContentType(); filename = ctype.getParameter("name"); if (filename == null || filename.trim().equals("")) filename = new ContentDisposition(req.getHeader("Content-Disposition")).getParameter("filename"); is = new UploadInputStream(contentEncoding != null && contentEncoding.indexOf("gzip") != -1 ? new GZIPInputStream(req.getInputStream()) : req.getInputStream(), limit); } if (filename == null || filename.trim().equals("")) filename = "unknown"; else params.put(UserServlet.UPLOAD_NAME, filename); params.put(UserServlet.UPLOAD_TYPE, contentType); ZimbraLog.mailbox.info("UserServlet received file %s - %d request bytes", filename, req.getContentLength()); return is; }
From source file:com.liferay.faces.metal.component.inputfile.internal.InputFileDecoderCommonsImpl.java
@Override public Map<String, List<UploadedFile>> decode(FacesContext facesContext, String location) { Map<String, List<UploadedFile>> uploadedFileMap = null; ExternalContext externalContext = facesContext.getExternalContext(); String uploadedFilesFolder = getUploadedFilesFolder(externalContext, location); // Using the sessionId, determine a unique folder path and create the path if it does not exist. String sessionId = getSessionId(externalContext); // FACES-1452: Non-alpha-numeric characters must be removed order to ensure that the folder will be // created properly. sessionId = sessionId.replaceAll("[^A-Za-z0-9]", " "); File uploadedFilesPath = new File(uploadedFilesFolder, sessionId); if (!uploadedFilesPath.exists()) { uploadedFilesPath.mkdirs();//from w ww . j a v a 2 s . com } // Initialize commons-fileupload with the file upload path. DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); diskFileItemFactory.setRepository(uploadedFilesPath); // Initialize commons-fileupload so that uploaded temporary files are not automatically deleted. diskFileItemFactory.setFileCleaningTracker(null); // Initialize the commons-fileupload size threshold to zero, so that all files will be dumped to disk // instead of staying in memory. diskFileItemFactory.setSizeThreshold(0); // Determine the max file upload size threshold (in bytes). int uploadedFileMaxSize = WebConfigParam.UploadedFileMaxSize.getIntegerValue(externalContext); // Parse the request parameters and save all uploaded files in a map. ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory); servletFileUpload.setFileSizeMax(uploadedFileMaxSize); uploadedFileMap = new HashMap<String, List<UploadedFile>>(); UploadedFileFactory uploadedFileFactory = (UploadedFileFactory) FactoryExtensionFinder .getFactory(UploadedFileFactory.class); // Begin parsing the request for file parts: try { FileItemIterator fileItemIterator = null; HttpServletRequest httpServletRequest = (HttpServletRequest) externalContext.getRequest(); fileItemIterator = servletFileUpload.getItemIterator(httpServletRequest); if (fileItemIterator != null) { int totalFiles = 0; // For each field found in the request: while (fileItemIterator.hasNext()) { try { totalFiles++; // Get the stream of field data from the request. FileItemStream fieldStream = (FileItemStream) fileItemIterator.next(); // Get field name from the field stream. String fieldName = fieldStream.getFieldName(); // Get the content-type, and file-name from the field stream. String contentType = fieldStream.getContentType(); boolean formField = fieldStream.isFormField(); String fileName = null; try { fileName = fieldStream.getName(); } catch (InvalidFileNameException e) { fileName = e.getName(); } // Copy the stream of file data to a temporary file. NOTE: This is necessary even if the // current field is a simple form-field because the call below to diskFileItem.getString() // will fail otherwise. DiskFileItem diskFileItem = (DiskFileItem) diskFileItemFactory.createItem(fieldName, contentType, formField, fileName); Streams.copy(fieldStream.openStream(), diskFileItem.getOutputStream(), true); // If the current field is a file, then if (!diskFileItem.isFormField()) { // Get the location of the temporary file that was copied from the request. File tempFile = diskFileItem.getStoreLocation(); // If the copy was successful, then if (tempFile.exists()) { // Copy the commons-fileupload temporary file to a file in the same temporary // location, but with the filename provided by the user in the upload. This has two // benefits: 1) The temporary file will have a nice meaningful name. 2) By copying // the file, the developer can have access to a semi-permanent file, because the // commmons-fileupload DiskFileItem.finalize() method automatically deletes the // temporary one. String tempFileName = tempFile.getName(); String tempFileAbsolutePath = tempFile.getAbsolutePath(); String copiedFileName = stripIllegalCharacters(fileName); String copiedFileAbsolutePath = tempFileAbsolutePath.replace(tempFileName, copiedFileName); File copiedFile = new File(copiedFileAbsolutePath); FileUtils.copyFile(tempFile, copiedFile); // If present, build up a map of headers. Map<String, List<String>> headersMap = new HashMap<String, List<String>>(); FileItemHeaders fileItemHeaders = fieldStream.getHeaders(); if (fileItemHeaders != null) { Iterator<String> headerNameItr = fileItemHeaders.getHeaderNames(); if (headerNameItr != null) { while (headerNameItr.hasNext()) { String headerName = headerNameItr.next(); Iterator<String> headerValuesItr = fileItemHeaders .getHeaders(headerName); List<String> headerValues = new ArrayList<String>(); if (headerValuesItr != null) { while (headerValuesItr.hasNext()) { String headerValue = headerValuesItr.next(); headerValues.add(headerValue); } } headersMap.put(headerName, headerValues); } } } // Put a valid UploadedFile instance into the map that contains all of the // uploaded file's attributes, along with a successful status. Map<String, Object> attributeMap = new HashMap<String, Object>(); String id = Long.toString(((long) hashCode()) + System.currentTimeMillis()); String message = null; UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile( copiedFileAbsolutePath, attributeMap, diskFileItem.getCharSet(), diskFileItem.getContentType(), headersMap, id, message, fileName, diskFileItem.getSize(), UploadedFile.Status.FILE_SAVED); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); logger.debug("Received uploaded file fieldName=[{0}] fileName=[{1}]", fieldName, fileName); } else { if ((fileName != null) && (fileName.trim().length() > 0)) { Exception e = new IOException("Failed to copy the stream of uploaded file=[" + fileName + "] to a temporary file (possibly a zero-length uploaded file)"); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); } } } } catch (Exception e) { logger.error(e); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); String fieldName = Integer.toString(totalFiles); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); } } } } // If there was an error in parsing the request for file parts, then put a bogus UploadedFile instance in // the map so that the developer can have some idea that something went wrong. catch (Exception e) { logger.error(e); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); addUploadedFile(uploadedFileMap, "unknown", uploadedFile); } return uploadedFileMap; }
From source file:cn.webwheel.ActionSetter.java
@SuppressWarnings("unchecked") public Object[] set(Object action, ActionInfo ai, HttpServletRequest request) throws IOException { SetterConfig cfg = ai.getSetterConfig(); List<SetterInfo> setters; if (action != null) { Class cls = action.getClass(); setters = setterMap.get(cls);/*from ww w .j a v a 2 s. c om*/ if (setters == null) { synchronized (this) { setters = setterMap.get(cls); if (setters == null) { Map<Class, List<SetterInfo>> map = new HashMap<Class, List<SetterInfo>>(setterMap); map.put(cls, setters = parseSetters(cls)); setterMap = map; } } } } else { setters = Collections.emptyList(); } List<SetterInfo> args = argMap.get(ai.actionMethod); if (args == null) { synchronized (this) { args = argMap.get(ai.actionMethod); if (args == null) { Map<Method, List<SetterInfo>> map = new HashMap<Method, List<SetterInfo>>(argMap); map.put(ai.actionMethod, args = parseArgs(ai.actionMethod)); argMap = map; } } } if (setters.isEmpty() && args.isEmpty()) return new Object[0]; Map<String, Object> params; try { if (cfg.getCharset() != null) { request.setCharacterEncoding(cfg.getCharset()); } } catch (UnsupportedEncodingException e) { // } if (ServletFileUpload.isMultipartContent(request)) { params = new HashMap<String, Object>(request.getParameterMap()); request.setAttribute(WRPName, params); ServletFileUpload fileUpload = new ServletFileUpload(); if (cfg.getCharset() != null) { fileUpload.setHeaderEncoding(cfg.getCharset()); } if (cfg.getFileUploadSizeMax() != 0) { fileUpload.setSizeMax(cfg.getFileUploadSizeMax()); } if (cfg.getFileUploadFileSizeMax() != 0) { fileUpload.setFileSizeMax(cfg.getFileUploadFileSizeMax()); } boolean throwe = false; try { FileItemIterator it = fileUpload.getItemIterator(request); while (it.hasNext()) { FileItemStream fis = it.next(); if (fis.isFormField()) { String s = Streams.asString(fis.openStream(), cfg.getCharset()); Object o = params.get(fis.getFieldName()); if (o == null) { params.put(fis.getFieldName(), new String[] { s }); } else if (o instanceof String[]) { String[] ss = (String[]) o; String[] nss = new String[ss.length + 1]; System.arraycopy(ss, 0, nss, 0, ss.length); nss[ss.length] = s; params.put(fis.getFieldName(), nss); } } else if (!fis.getName().isEmpty()) { File tempFile; try { tempFile = File.createTempFile("wfu", null); } catch (IOException e) { throwe = true; throw e; } FileExImpl fileEx = new FileExImpl(tempFile); Object o = params.get(fis.getFieldName()); if (o == null) { params.put(fis.getFieldName(), new FileEx[] { fileEx }); } else if (o instanceof FileEx[]) { FileEx[] ss = (FileEx[]) o; FileEx[] nss = new FileEx[ss.length + 1]; System.arraycopy(ss, 0, nss, 0, ss.length); nss[ss.length] = fileEx; params.put(fis.getFieldName(), nss); } Streams.copy(fis.openStream(), new FileOutputStream(fileEx.getFile()), true); fileEx.fileName = fis.getName(); fileEx.contentType = fis.getContentType(); } } } catch (FileUploadException e) { if (action instanceof FileUploadExceptionAware) { ((FileUploadExceptionAware) action).setFileUploadException(e); } } catch (IOException e) { if (throwe) { throw e; } } } else { params = request.getParameterMap(); } if (cfg.getSetterPolicy() == SetterPolicy.ParameterAndField || (cfg.getSetterPolicy() == SetterPolicy.Auto && args.isEmpty())) { for (SetterInfo si : setters) { si.setter.set(action, si.member, params, si.paramName); } } Object[] as = new Object[args.size()]; for (int i = 0; i < as.length; i++) { SetterInfo si = args.get(i); as[i] = si.setter.set(action, null, params, si.paramName); } return as; }
From source file:com.google.sampling.experiential.server.EventServlet.java
private void processCsvUpload(HttpServletRequest req, HttpServletResponse resp) { PrintWriter out = null;/*from w w w. j a va 2 s . c o m*/ try { out = resp.getWriter(); } catch (IOException e1) { log.log(Level.SEVERE, "Cannot get an output PrintWriter!"); } try { boolean isDevInstance = isDevInstance(req); ServletFileUpload fileUploadTool = new ServletFileUpload(); fileUploadTool.setSizeMax(50000); resp.setContentType("text/html;charset=UTF-8"); FileItemIterator iterator = fileUploadTool.getItemIterator(req); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream in = null; try { in = item.openStream(); if (item.isFormField()) { out.println("Got a form field: " + item.getFieldName()); } else { String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); out.println("--------------"); out.println("fileName = " + fileName); out.println("field name = " + fieldName); out.println("contentType = " + contentType); String fileContents = null; fileContents = IOUtils.toString(in); out.println("length: " + fileContents.length()); out.println(fileContents); saveCSV(fileContents, isDevInstance); } } catch (ParseException e) { log.info("Parse Exception: " + e.getMessage()); out.println("Could not parse your csv upload: " + e.getMessage()); } finally { in.close(); } } } catch (SizeLimitExceededException e) { log.info("SizeLimitExceededException: " + e.getMessage()); out.println("You exceeded the maximum size (" + e.getPermittedSize() + ") of the file (" + e.getActualSize() + ")"); return; } catch (IOException e) { log.severe("IOException: " + e.getMessage()); out.println("Error in receiving file."); } catch (FileUploadException e) { log.severe("FileUploadException: " + e.getMessage()); out.println("Error in receiving file."); } }
From source file:com.liferay.faces.alloy.component.inputfile.internal.InputFileDecoderCommonsImpl.java
@Override public Map<String, List<UploadedFile>> decode(FacesContext facesContext, String location) { Map<String, List<UploadedFile>> uploadedFileMap = null; ExternalContext externalContext = facesContext.getExternalContext(); String uploadedFilesFolder = getUploadedFilesFolder(externalContext, location); // Using the sessionId, determine a unique folder path and create the path if it does not exist. String sessionId = getSessionId(externalContext); // FACES-1452: Non-alpha-numeric characters must be removed order to ensure that the folder will be // created properly. sessionId = sessionId.replaceAll("[^A-Za-z0-9]", " "); File uploadedFilesPath = new File(uploadedFilesFolder, sessionId); if (!uploadedFilesPath.exists()) { uploadedFilesPath.mkdirs();//ww w . j av a 2 s . c o m } // Initialize commons-fileupload with the file upload path. DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); diskFileItemFactory.setRepository(uploadedFilesPath); // Initialize commons-fileupload so that uploaded temporary files are not automatically deleted. diskFileItemFactory.setFileCleaningTracker(null); // Initialize the commons-fileupload size threshold to zero, so that all files will be dumped to disk // instead of staying in memory. diskFileItemFactory.setSizeThreshold(0); // Determine the max file upload size threshold (in bytes). int uploadedFileMaxSize = WebConfigParam.UploadedFileMaxSize.getIntegerValue(externalContext); // Parse the request parameters and save all uploaded files in a map. ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory); servletFileUpload.setFileSizeMax(uploadedFileMaxSize); uploadedFileMap = new HashMap<String, List<UploadedFile>>(); UploadedFileFactory uploadedFileFactory = (UploadedFileFactory) FactoryExtensionFinder .getFactory(externalContext, UploadedFileFactory.class); // Begin parsing the request for file parts: try { FileItemIterator fileItemIterator = null; HttpServletRequest httpServletRequest = (HttpServletRequest) externalContext.getRequest(); fileItemIterator = servletFileUpload.getItemIterator(httpServletRequest); if (fileItemIterator != null) { int totalFiles = 0; // For each field found in the request: while (fileItemIterator.hasNext()) { try { totalFiles++; // Get the stream of field data from the request. FileItemStream fieldStream = (FileItemStream) fileItemIterator.next(); // Get field name from the field stream. String fieldName = fieldStream.getFieldName(); // Get the content-type, and file-name from the field stream. String contentType = fieldStream.getContentType(); boolean formField = fieldStream.isFormField(); String fileName = null; try { fileName = fieldStream.getName(); } catch (InvalidFileNameException e) { fileName = e.getName(); } // Copy the stream of file data to a temporary file. NOTE: This is necessary even if the // current field is a simple form-field because the call below to diskFileItem.getString() // will fail otherwise. DiskFileItem diskFileItem = (DiskFileItem) diskFileItemFactory.createItem(fieldName, contentType, formField, fileName); Streams.copy(fieldStream.openStream(), diskFileItem.getOutputStream(), true); // If the current field is a file, then if (!diskFileItem.isFormField()) { // Get the location of the temporary file that was copied from the request. File tempFile = diskFileItem.getStoreLocation(); // If the copy was successful, then if (tempFile.exists()) { // Copy the commons-fileupload temporary file to a file in the same temporary // location, but with the filename provided by the user in the upload. This has two // benefits: 1) The temporary file will have a nice meaningful name. 2) By copying // the file, the developer can have access to a semi-permanent file, because the // commmons-fileupload DiskFileItem.finalize() method automatically deletes the // temporary one. String tempFileName = tempFile.getName(); String tempFileAbsolutePath = tempFile.getAbsolutePath(); String copiedFileName = stripIllegalCharacters(fileName); String copiedFileAbsolutePath = tempFileAbsolutePath.replace(tempFileName, copiedFileName); File copiedFile = new File(copiedFileAbsolutePath); FileUtils.copyFile(tempFile, copiedFile); // If present, build up a map of headers. Map<String, List<String>> headersMap = new HashMap<String, List<String>>(); FileItemHeaders fileItemHeaders = fieldStream.getHeaders(); if (fileItemHeaders != null) { Iterator<String> headerNameItr = fileItemHeaders.getHeaderNames(); if (headerNameItr != null) { while (headerNameItr.hasNext()) { String headerName = headerNameItr.next(); Iterator<String> headerValuesItr = fileItemHeaders .getHeaders(headerName); List<String> headerValues = new ArrayList<String>(); if (headerValuesItr != null) { while (headerValuesItr.hasNext()) { String headerValue = headerValuesItr.next(); headerValues.add(headerValue); } } headersMap.put(headerName, headerValues); } } } // Put a valid UploadedFile instance into the map that contains all of the // uploaded file's attributes, along with a successful status. Map<String, Object> attributeMap = new HashMap<String, Object>(); String id = Long.toString(((long) hashCode()) + System.currentTimeMillis()); String message = null; UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile( copiedFileAbsolutePath, attributeMap, diskFileItem.getCharSet(), diskFileItem.getContentType(), headersMap, id, message, fileName, diskFileItem.getSize(), UploadedFile.Status.FILE_SAVED); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); logger.debug("Received uploaded file fieldName=[{0}] fileName=[{1}]", fieldName, fileName); } else { if ((fileName != null) && (fileName.trim().length() > 0)) { Exception e = new IOException("Failed to copy the stream of uploaded file=[" + fileName + "] to a temporary file (possibly a zero-length uploaded file)"); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); } } } } catch (Exception e) { logger.error(e); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); String fieldName = Integer.toString(totalFiles); addUploadedFile(uploadedFileMap, fieldName, uploadedFile); } } } } // If there was an error in parsing the request for file parts, then put a bogus UploadedFile instance in // the map so that the developer can have some idea that something went wrong. catch (Exception e) { logger.error(e); UploadedFile uploadedFile = uploadedFileFactory.getUploadedFile(e); addUploadedFile(uploadedFileMap, "unknown", uploadedFile); } return uploadedFileMap; }