/** * Initialize the underlying {@code org.apache.commons.fileupload.servlet.ServletFileUpload} * instance. Can be overridden to use a custom subclass, e.g. for testing purposes. * @param fileItemFactory the Commons FileItemFactory to use * @return the new ServletFileUpload instance */ @Override protected FileUpload newFileUpload(FileItemFactory fileItemFactory) { return new ServletFileUpload(fileItemFactory); }
/** * Initialize the underlying {@code org.apache.commons.fileupload.servlet.ServletFileUpload} * instance. Can be overridden to use a custom subclass, e.g. for testing purposes. * @param fileItemFactory the Commons FileItemFactory to use * @return the new ServletFileUpload instance */ @Override protected FileUpload newFileUpload(FileItemFactory fileItemFactory) { return new ServletFileUpload(fileItemFactory); }
public Map<String, Object> parseMultipart(final HttpServletRequest request) throws IOException, ServletException { final ServletFileUpload upload = new ServletFileUpload(this._uploadItemFactory); List<FileItem> items = null; try { items = upload.parseRequest(request); } catch (final FileUploadException e) { throw new ServletException(e); } final Map<String, Object> params = new HashMap<>(); for (final FileItem item : items) { if (item.isFormField()) { params.put(item.getFieldName(), item.getString()); } else { params.put(item.getFieldName(), item); } } return params; }
private Collection<Part> parseMultipartWithCommonsFileUpload(HttpServletRequest request) throws IOException { if (sharedFileItemFactory.get() == null) { // Not a big deal if two threads actually set this up DiskFileItemFactory fileItemFactory = new DiskFileItemFactory( 1 << 16, (File) servletContext.getAttribute("javax.servlet.context.tempdir")); fileItemFactory.setFileCleaningTracker( FileCleanerCleanup.getFileCleaningTracker(servletContext)); sharedFileItemFactory.compareAndSet(null, fileItemFactory); } try { return new ServletFileUpload(sharedFileItemFactory.get()).parseRequest(request) .stream().map(FileItemPart::new).collect(Collectors.toList()); } catch (FileUploadException e) { throw new IOException(e.getMessage()); } }
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { if (bypass) { filterChain.doFilter(request, response); return; } HttpServletRequest httpServletRequest = (HttpServletRequest) request; boolean isMultipart = ServletFileUpload.isMultipartContent(httpServletRequest); if (isMultipart) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("Parsing file upload request"); } ServletFileUpload servletFileUpload = new ServletFileUpload(createFileItemFactory(httpServletRequest)); MultipartRequest multipartRequest = new MultipartRequest(httpServletRequest, servletFileUpload); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("File upload request parsed succesfully, continuing with filter chain with a wrapped multipart request"); } filterChain.doFilter(multipartRequest, response); } else { filterChain.doFilter(request, response); } }
// Your upload handle would look like public void doPost(HttpServletRequest req, HttpServletResponse res) { // Get the image representation ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iter = upload.getItemIterator(req); FileItemStream imageItem = iter.next(); InputStream imgStream = imageItem.openStream(); // construct our entity objects Blob imageBlob = new Blob(IOUtils.toByteArray(imgStream)); MyImage myImage = new MyImage(imageItem.getName(), imageBlob); // persist image PersistenceManager pm = PMF.get().getPersistenceManager(); pm.makePersistent(myImage); pm.close(); // respond to query res.setContentType("text/plain"); res.getOutputStream().write("OK!".getBytes()); }
/** * Return a list of {@link FileUpload} implementations for parameterized tests. * @return a list of {@link FileUpload} implementations */ public static List<FileUpload> fileUploadImplementations() { return Arrays.asList( new ServletFileUpload(new DiskFileItemFactory()), new PortletFileUpload(new DiskFileItemFactory())); } }
ServletFileUpload upload = new ServletFileUpload();
Jenkins.getInstance().checkPermission(UPLOAD_PLUGINS); ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletFileUpload upload = new ServletFileUpload();
@Override public FileItemIterator getFileItemIterator() { long maxFileSize = ninjaProperties.getIntegerWithDefault(NinjaConstant.UPLOADS_MAX_FILE_SIZE, -1); long maxTotalSize = ninjaProperties.getIntegerWithDefault(NinjaConstant.UPLOADS_MAX_TOTAL_SIZE, -1); ServletFileUpload upload = new ServletFileUpload(); upload.setFileSizeMax(maxFileSize); upload.setSizeMax(maxTotalSize); FileItemIterator fileItemIterator = null; try { fileItemIterator = upload.getItemIterator(httpServletRequest); } catch (FileUploadException | IOException e) { logger.error("Error while trying to process mulitpart file upload", e); } return fileItemIterator; }
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
private List<FileItem> parseUpload(InputStream pStream, int pLength) throws FileUploadException { String contentType = "multipart/form-data; boundary=---1234"; FileUploadBase upload = new ServletFileUpload(); upload.setFileItemFactory(new DiskFileItemFactory()); HttpServletRequest request = new MockHttpServletRequest(pStream, pLength, contentType); List<FileItem> fileItems = upload.parseRequest(new ServletRequestContext(request)); return fileItems; }
private FileItemIterator parseUpload(int pLength, InputStream pStream) throws FileUploadException, IOException { String contentType = "multipart/form-data; boundary=---1234"; FileUploadBase upload = new ServletFileUpload(); upload.setFileItemFactory(new DiskFileItemFactory()); HttpServletRequest request = new MockHttpServletRequest(pStream, pLength, contentType); return upload.getItemIterator(new ServletRequestContext(request)); }
@Test public void parseImpliedUtf8() throws Exception { // utf8 encoded form-data without explicit content-type encoding String text = "-----1234\r\n" + "Content-Disposition: form-data; name=\"utf8Html\"\r\n" + "\r\n" + "Ths s the cotet of the fle\n" + "\r\n" + "-----1234--\r\n"; byte[] bytes = text.getBytes("UTF-8"); HttpServletRequest request = new MockHttpServletRequest(bytes, Constants.CONTENT_TYPE); DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); fileItemFactory.setDefaultCharset("UTF-8"); ServletFileUpload upload = new ServletFileUpload(fileItemFactory); List<FileItem> fileItems = upload.parseRequest(request); FileItem fileItem = fileItems.get(0); assertTrue(fileItem.getString(), fileItem.getString().contains("cotet")); } }
"-----1234--\r\n"; ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); upload.setFileSizeMax(-1); HttpServletRequest req = new MockHttpServletRequest( assertEquals("This is the content of the file\n", new String(item.get())); upload = new ServletFileUpload(new DiskFileItemFactory()); upload.setFileSizeMax(40); req = new MockHttpServletRequest(request.getBytes("US-ASCII"), Constants.CONTENT_TYPE); assertEquals("This is the content of the file\n", new String(item.get())); upload = new ServletFileUpload(new DiskFileItemFactory()); upload.setFileSizeMax(30); req = new MockHttpServletRequest(request.getBytes("US-ASCII"), Constants.CONTENT_TYPE);
if (isMultipart) { List<String> files = new ArrayList<>(); ServletFileUpload upload = new ServletFileUpload();
HttpServletRequest request = new MockHttpServletRequest(bytes, Constants.CONTENT_TYPE); ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); Map<String, List<FileItem>> mappedParameters = upload.parseParameterMap(request); assertTrue(mappedParameters.containsKey("file"));
"-----1234--\r\n"; ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); upload.setFileSizeMax(-1); upload.setSizeMax(200);
private void runTest(final int NUM_ITEMS, long pContentLength, MockHttpServletRequest request) throws FileUploadException, IOException { ServletFileUpload upload = new ServletFileUpload(); ProgressListenerImpl listener = new ProgressListenerImpl(pContentLength, NUM_ITEMS); upload.setProgressListener(listener); FileItemIterator iter = upload.getItemIterator(request); for (int i = 0; i < NUM_ITEMS; i++) { FileItemStream stream = iter.next(); InputStream istream = stream.openStream(); for (int j = 0; j < 16384+i; j++) { /** * This used to be * assertEquals((byte) j, (byte) istream.read()); * but this seems to trigger a bug in JRockit, so * we express the same like this: */ byte b1 = (byte) j; byte b2 = (byte) istream.read(); if (b1 != b2) { fail("Expected " + b1 + ", got " + b2); } } assertEquals(-1, istream.read()); istream.close(); } assertTrue(!iter.hasNext()); listener.checkFinished(); }