List of usage examples for org.apache.commons.fileupload.disk DiskFileItemFactory setRepository
public void setRepository(File repository)
From source file:org.nyu.edu.dlts.server.SchematronServlet.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods.// w w w .j ava 2s . co m * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Configure a repository (to ensure a secure temp location is used) ServletContext servletContext = this.getServletConfig().getServletContext(); String schematronFilename = servletContext.getRealPath("/schematrons/ArchivesSpace-EAD-validator.sch"); schematronFile = new File(schematronFilename); File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); factory.setRepository(repository); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); try { // Parse the request List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> iter = items.iterator(); File[] uploadedFiles = new File[4]; String format = null; int fileIndex = 0; while (iter.hasNext()) { FileItem item = iter.next(); if (item.isFormField()) { format = item.getString(); } else { String fieldName = item.getFieldName(); String fileName = item.getName(); if (!fileName.trim().isEmpty()) { uploadedFiles[fileIndex] = new File(repository, fileName); item.write(uploadedFiles[fileIndex]); } fileIndex++; } } // if we have files the process them if (uploadedFiles[0] != null && format != null) { String results = ""; for (int i = 0; i < uploadedFiles.length; i++) { File file = uploadedFiles[i]; if (file != null) { results += validateUsingSchematron(format, file); } } out.println(results); } else { out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>SchematronServlet Error</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Error, missing upload file ...</h1>"); out.println("</body>"); out.println("</html>"); } } catch (FileUploadException ex) { Logger.getLogger(SchematronServlet.class.getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { Logger.getLogger(SchematronServlet.class.getName()).log(Level.SEVERE, null, ex); } finally { out.close(); } }
From source file:org.onesocialweb.openfire.web.FileServlet.java
private void processPost(HttpServletRequest request, HttpServletResponse response) throws Exception { final PrintWriter out = response.getWriter(); // 1- Bind this request to a XMPP JID final JID user = getAuthenticatedUser(request); if (user == null) { throw new AuthenticationException(); }// w w w.ja va2s . c o m // 2- Process the file final UploadManager uploadManager = UploadManager.getInstance(); // Files larger than a threshold should be stored on disk in temporary // storage place final DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(256000); factory.setRepository(getTempFolder()); // Prepare the upload parser and set a max size to enforce final ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(512000000); // Get the request ID final String requestId = request.getParameter("requestId"); // Create a progress listener ProgressListener progressListener = new ProgressListener() { private long lastNotification = 0; public void update(long pBytesRead, long pContentLength, int pItems) { if (lastNotification == 0 || (pBytesRead - lastNotification) > NOTIFICATION_THRESHOLD) { lastNotification = pBytesRead; UploadManager.getInstance().updateProgress(user, pBytesRead, pContentLength, requestId); } } }; upload.setProgressListener(progressListener); // Process the upload List items = upload.parseRequest(request); for (Object objItem : items) { FileItem item = (FileItem) objItem; if (!item.isFormField()) { String fileID = UUID.randomUUID().toString(); File target = new File(getUploadFolder(), fileID); item.write(target); UploadManager.getInstance().commitFile(user, target, item.getName(), requestId); break; // Store only one file } } }
From source file:org.opencms.ade.upload.CmsUploadBean.java
/** * Parses a request of the form <code>multipart/form-data</code>.<p> * //from ww w .j ava 2 s .co m * The result list will contain items of type <code>{@link FileItem}</code>. * If the request has no file items, then <code>null</code> is returned.<p> * * @param listener the upload listener * * @return the list of <code>{@link FileItem}</code> extracted from the multipart request, * or <code>null</code> if the request has no file items * * @throws Exception if anything goes wrong */ private List<FileItem> readMultipartFileItems(CmsUploadListener listener) throws Exception { DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than the threshold factory.setRepository(new File(OpenCms.getSystemInfo().getPackagesRfsPath())); // create a file upload servlet ServletFileUpload fu = new ServletFileUpload(factory); // set the listener fu.setProgressListener(listener); // set encoding to correctly handle special chars (e.g. in filenames) fu.setHeaderEncoding(getRequest().getCharacterEncoding()); // set the maximum size for a single file (value is in bytes) long maxFileSizeBytes = OpenCms.getWorkplaceManager().getFileBytesMaxUploadSize(getCmsObject()); if (maxFileSizeBytes > 0) { fu.setFileSizeMax(maxFileSizeBytes); } // try to parse the request try { return CmsCollectionsGenericWrapper.list(fu.parseRequest(getRequest())); } catch (SizeLimitExceededException e) { // request size is larger than maximum allowed request size, throw an error Integer actualSize = new Integer((int) (e.getActualSize() / 1024)); Integer maxSize = new Integer((int) (e.getPermittedSize() / 1024)); throw new CmsUploadException(m_bundle .key(org.opencms.ade.upload.Messages.ERR_UPLOAD_REQUEST_SIZE_LIMIT_2, actualSize, maxSize), e); } catch (FileSizeLimitExceededException e) { // file size is larger than maximum allowed file size, throw an error Integer actualSize = new Integer((int) (e.getActualSize() / 1024)); Integer maxSize = new Integer((int) (e.getPermittedSize() / 1024)); throw new CmsUploadException(m_bundle.key(org.opencms.ade.upload.Messages.ERR_UPLOAD_FILE_SIZE_LIMIT_3, actualSize, e.getFileName(), maxSize), e); } }
From source file:org.opencms.util.CmsRequestUtil.java
/** * Parses a request of the form <code>multipart/form-data</code>. * /*from w w w. j a v a 2 s . co m*/ * The result list will contain items of type <code>{@link FileItem}</code>. * If the request is not of type <code>multipart/form-data</code>, then <code>null</code> is returned.<p> * * @param request the HTTP servlet request to parse * * @return the list of <code>{@link FileItem}</code> extracted from the multipart request, * or <code>null</code> if the request was not of type <code>multipart/form-data</code> */ public static List<FileItem> readMultipartFileItems(HttpServletRequest request) { if (!ServletFileUpload.isMultipartContent(request)) { return null; } DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() factory.setRepository(new File(OpenCms.getSystemInfo().getPackagesRfsPath())); ServletFileUpload fu = new ServletFileUpload(factory); // set encoding to correctly handle special chars (e.g. in filenames) fu.setHeaderEncoding(request.getCharacterEncoding()); List<FileItem> result = new ArrayList<FileItem>(); try { List<FileItem> items = CmsCollectionsGenericWrapper.list(fu.parseRequest(request)); if (items != null) { result = items; } } catch (FileUploadException e) { LOG.error(Messages.get().getBundle().key(Messages.LOG_PARSE_MULIPART_REQ_FAILED_0), e); } return result; }
From source file:org.opensubsystems.core.util.servlet.WebParamUtils.java
/** * Parse multipart request and separate regular parameters and files. The * files names are also stored as values of the parameters that are used to * upload them./*from w w w.j a v a 2 s .c o m*/ * * @param strLogPrefix - log prefix used for all log output to tie together * the same invocations * @param request - request to get parameter from * @return TwoElementStruct<Map<String, String>, Map<String, FileItem>> - the * first element is map of parameter names and their values. * For uploaded files the files names are also stored here as * values of the parameters that are used to upload them. * If there is only one value of the parameter then the value * is stored directly as String. If there are multiple values * then the values are stored as List<String>. * The second element is map of parameter names and the files * that are uploaded as these parameters. * @throws FileUploadException - an error has occurred */ public static TwoElementStruct<Map<String, Object>, Map<String, FileItem>> parseMultipartRequest( String strLogPrefix, HttpServletRequest request) throws FileUploadException { if (GlobalConstants.ERROR_CHECKING) { assert ServletFileUpload.isMultipartContent(request) : "Specified request is not multipart"; } TwoElementStruct<Map<String, Object>, Map<String, FileItem>> returnValue; FileCleaningTracker fileCleaningTracker; String strTempDir; DiskFileItemFactory factory; Properties prpSettings; int iMaxInMemorySize; int iMaxSize; ServletFileUpload upload; List<FileItem> items; // TODO: Improve: Consider calling // FileUtils.createTemporarySubdirectory // as done in legacy Formature.DocumentTemplateServlet.getFormToProcess // to store the temporary files per session and request strTempDir = FileUtils.getTemporaryDirectory(); prpSettings = Config.getInstance().getProperties(); iMaxInMemorySize = PropertyUtils.getIntPropertyInRange(prpSettings, REQUEST_UPLOAD_MEMORY_THRESHOLD, REQUEST_UPLOAD_MEMORY_THRESHOLD_DEFAULT, "Maximal size of uploaded file that is kept in memory", 1, // 0 is allowed Integer.MAX_VALUE); iMaxSize = PropertyUtils.getIntPropertyInRange(prpSettings, REQUEST_UPLOAD_MAX_SIZE, REQUEST_UPLOAD_MAX_SIZE_DEFAULT, "Maximal size of uploaded file", 1, // 0 is allowed Integer.MAX_VALUE); fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(request.getServletContext()); // Create a factory for disk-based file items factory = new DiskFileItemFactory(); factory.setFileCleaningTracker(fileCleaningTracker); // Set factory constraints factory.setSizeThreshold(iMaxInMemorySize); factory.setRepository(new File(strTempDir)); // Create a new file upload handler upload = new ServletFileUpload(factory); // Set overall request size constraint upload.setSizeMax(iMaxSize); // Parse the request items = upload.parseRequest(request); if ((items != null) && (!items.isEmpty())) { Map mpParams; Map mpFiles; String strParamName; String strValue; Object temp; List<String> lstValues; mpParams = new HashMap(items.size()); mpFiles = new HashMap(); returnValue = new TwoElementStruct(mpParams, mpFiles); for (FileItem item : items) { strParamName = item.getFieldName(); if (item.isFormField()) { strValue = item.getString(); } else { strValue = item.getName(); mpFiles.put(strParamName, item); } temp = mpParams.put(strParamName, strValue); if (temp != null) { // There was already an value so convert it to list of values if (temp instanceof String) { // There are currently exactly two values lstValues = new ArrayList<>(); lstValues.add((String) temp); mpParams.put(strParamName, lstValues); } else { // There are currently more than two values lstValues = (List<String>) temp; } lstValues.add(strValue); } } } else { returnValue = new TwoElementStruct(Collections.emptyMap(), Collections.emptyMap()); } return returnValue; }
From source file:org.origin.common.servlet.WebConsoleUtil.java
/** * An utility method, that is used to filter out simple parameter from file parameter when multipart transfer encoding is used. * * This method processes the request and sets a request attribute {@link AbstractWebConsolePlugin#ATTR_FILEUPLOAD}. The attribute value is a {@link Map} * where the key is a String specifying the field name and the value is a {@link org.apache.commons.fileupload.FileItem}. * * @param request/*from ww w. j a v a 2s . co m*/ * the HTTP request coming from the user * @param name * the name of the parameter * @return if not multipart transfer encoding is used - the value is the parameter value or <code>null</code> if not set. If multipart is used, and the * specified parameter is field - then the value of the parameter is returned. */ public static final String getParameter(HttpServletRequest request, String name) { // just get the parameter if not a multipart/form-data POST if (!FileUploadBase.isMultipartContent(new ServletRequestContext(request))) { return request.getParameter(name); } // check, whether we already have the parameters Map params = (Map) request.getAttribute(ATTR_FILEUPLOAD); if (params == null) { // parameters not read yet, read now // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(256000); // See https://issues.apache.org/jira/browse/FELIX-4660 final Object repo = request.getAttribute(ATTR_FILEUPLOAD_REPO); if (repo instanceof File) { factory.setRepository((File) repo); } // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(-1); // Parse the request params = new HashMap(); try { List items = upload.parseRequest(request); for (Iterator fiter = items.iterator(); fiter.hasNext();) { FileItem fi = (FileItem) fiter.next(); FileItem[] current = (FileItem[]) params.get(fi.getFieldName()); if (current == null) { current = new FileItem[] { fi }; } else { FileItem[] newCurrent = new FileItem[current.length + 1]; System.arraycopy(current, 0, newCurrent, 0, current.length); newCurrent[current.length] = fi; current = newCurrent; } params.put(fi.getFieldName(), current); } } catch (FileUploadException fue) { // TODO: log } request.setAttribute(ATTR_FILEUPLOAD, params); } FileItem[] param = (FileItem[]) params.get(name); if (param != null) { for (int i = 0; i < param.length; i++) { if (param[i].isFormField()) { return param[i].getString(); } } } // no valid string parameter, fail return null; }
From source file:org.ow2.proactive_grid_cloud_portal.common.server.CredentialsServlet.java
private void login(HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html"); try {// w w w .j a v a2 s .c om DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(1000000); List<?> fileItems = upload.parseRequest(request); Iterator<?> i = fileItems.iterator(); String user = ""; String pass = ""; String sshKey = ""; while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (fi.isFormField()) { String name = fi.getFieldName(); String value = fi.getString(); if (name.equals("username")) { user = value; } else if (name.equals("password")) { pass = value; } } else { String field = fi.getFieldName(); byte[] bytes = IOUtils.toByteArray(fi.getInputStream()); if (field.equals("sshkey")) { sshKey = new String(bytes); } } fi.delete(); } String responseS = Service.get().createCredentials(user, pass, sshKey); response.setHeader("Content-disposition", "attachment; filename=" + user + "_cred.txt"); response.setHeader("Location", "" + user + ".cred.txt"); response.getWriter().write(responseS); } catch (Throwable t) { try { response.getWriter().write(t.getMessage()); } catch (IOException e1) { LOGGER.warn("Failed to return login error to client, error was:" + t.getMessage(), e1); } } }
From source file:org.ow2.proactive_grid_cloud_portal.common.server.LoginServlet.java
private void login(HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html"); File cred = null;/*from w ww . j ava 2s .com*/ try { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(1000000); List<?> fileItems = upload.parseRequest(request); Iterator<?> i = fileItems.iterator(); String user = ""; String pass = ""; String sshKey = ""; while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (fi.isFormField()) { String name = fi.getFieldName(); String value = fi.getString(); if (name.equals("username")) { user = value; } else if (name.equals("password")) { pass = value; } } else { String field = fi.getFieldName(); byte[] bytes = IOUtils.toByteArray(fi.getInputStream()); if (field.equals("credential")) { cred = File.createTempFile("credential", null); cred.deleteOnExit(); fi.write(cred); } else if (field.equals("sshkey")) { sshKey = new String(bytes); } } fi.delete(); } String responseS = Service.get().login(user, pass, cred, sshKey); String s = "{ \"sessionId\" : \"" + responseS + "\" }"; response.getWriter().write(SafeHtmlUtils.htmlEscape(s)); } catch (Throwable t) { try { response.getWriter().write(SafeHtmlUtils.htmlEscape(t.getMessage())); } catch (IOException e1) { LOGGER.warn("Failed to return login error to client, error was:" + t.getMessage(), e1); } } finally { if (cred != null) cred.delete(); } }
From source file:org.ow2.proactive_grid_cloud_portal.rm.server.NSCreationServlet.java
private void createNs(HttpServletRequest request, HttpServletResponse response) { String sessionId = ""; String callbackName = ""; String nsName = ""; String infra = ""; String policy = ""; ArrayList<String> infraParams = new ArrayList<>(); ArrayList<String> infraFileParams = new ArrayList<>(); ArrayList<String> policyParams = new ArrayList<>(); ArrayList<String> policyFileParams = new ArrayList<>(); boolean readingInfraParams = false; boolean readingPolicyParams = false; try {/*from w ww .j a v a 2s .c o m*/ DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(MAX_UPLOAD_SIZE); List<?> fileItems = upload.parseRequest(request); Iterator<?> i = fileItems.iterator(); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); String fieldName = fi.getFieldName(); if (fi.isFormField()) { if (fieldName.equals("sessionId")) { sessionId = fi.getString(); } else if (fieldName.equals("nsCallback")) { callbackName = fi.getString(); } else if (fieldName.equals("nsName")) { nsName = fi.getString(); } else if (fieldName.equals("infra")) { infra = fi.getString(); readingInfraParams = true; } else if (fieldName.equals("policy")) { policy = fi.getString(); readingPolicyParams = true; readingInfraParams = false; } else if (readingInfraParams) { infraParams.add(fi.getString()); } else if (readingPolicyParams) { policyParams.add(fi.getString()); } else { LOGGER.warn("Unexpected param " + fieldName); } } else { if (readingInfraParams) { byte[] bytes = IOUtils.toByteArray(fi.getInputStream()); infraFileParams.add(new String(bytes)); } else if (readingPolicyParams) { byte[] bytes = IOUtils.toByteArray(fi.getInputStream()); policyFileParams.add(new String(bytes)); } else { LOGGER.warn("Unexpected param " + fieldName); } } } String failFast = null; if (nsName.length() == 0) { failFast = "You need to pick a name for the new Node Source"; } else if (policy.length() == 0 || policy.equals("undefined")) { failFast = "No Policy selected"; } else if (infra.length() == 0 || infra.equals("undefined")) { failFast = "No Infrastructure selected"; } if (failFast != null) { throw new RestServerException(failFast); } String jsonResult = ((RMServiceImpl) RMServiceImpl.get()).createNodeSource(sessionId, nsName, infra, toArray(infraParams), toArray(infraFileParams), policy, toArray(policyParams), toArray(policyFileParams)); if (jsonResult.equals("true")) { jsonResult = createNonEscapedSimpleJsonPair("result", "true"); } write(response, createJavascriptPayload(callbackName, jsonResult)); } catch (Throwable t) { write(response, createJavascriptPayload(callbackName, createEscapedSimpleJsonPair("errorMessage", t.getMessage()))); } }
From source file:org.ow2.proactive_grid_cloud_portal.rm.server.ServletRequestTransformer.java
@SuppressWarnings("unchecked") public List<FileItem> getFormItems(HttpServletRequest request) throws FileUploadException { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(FILE_ITEM_THRESHOLD_SIZE); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(MAX_FILE_UPLOAD_SIZE); return (List<FileItem>) upload.parseRequest(request); }