@Override protected void initializeMultipart() { MultipartParsingResult parsingResult = parseRequest(request); setMultipartFiles(parsingResult.getMultipartFiles()); setMultipartParameters(parsingResult.getMultipartParameters()); setMultipartParameterContentTypes(parsingResult.getMultipartParameterContentTypes()); } };
/** * Constructor for standalone usage. Determines the servlet container's * temporary directory via the given ServletContext. * @param servletContext the ServletContext to use */ public CommonsMultipartResolver(ServletContext servletContext) { this(); setServletContext(servletContext); }
/** * Instantiate a new CommonsFileUploadSupport with its * corresponding FileItemFactory and FileUpload instances. * @see #newFileItemFactory * @see #newFileUpload */ public CommonsFileUploadSupport() { this.fileItemFactory = newFileItemFactory(); this.fileUpload = newFileUpload(getFileItemFactory()); }
@Configuration @ComponentScan({ "test.controllers" }) @EnableWebMvc public class WebConfig extends WebMvcConfigurationSupport { @Bean public MultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; } }
@Override public MultipartHttpServletRequest resolveMultipart(final HttpServletRequest request) throws MultipartException { Assert.notNull(request, "Request must not be null"); if (this.resolveLazily) { return new DefaultMultipartHttpServletRequest(request) { @Override protected void initializeMultipart() { MultipartParsingResult parsingResult = parseRequest(request); setMultipartFiles(parsingResult.getMultipartFiles()); setMultipartParameters(parsingResult.getMultipartParameters()); setMultipartParameterContentTypes(parsingResult.getMultipartParameterContentTypes()); } }; } else { MultipartParsingResult parsingResult = parseRequest(request); return new DefaultMultipartHttpServletRequest(request, parsingResult.getMultipartFiles(), parsingResult.getMultipartParameters(), parsingResult.getMultipartParameterContentTypes()); } }
/** * Create a {@link CommonsMultipartFile} wrapper for the given Commons {@link FileItem}. * @param fileItem the Commons FileItem to wrap * @return the corresponding CommonsMultipartFile (potentially a custom subclass) * @since 4.3.5 * @see #setPreserveFilename(boolean) * @see CommonsMultipartFile#setPreserveFilename(boolean) */ protected CommonsMultipartFile createMultipartFile(FileItem fileItem) { CommonsMultipartFile multipartFile = new CommonsMultipartFile(fileItem); multipartFile.setPreserveFilename(this.preserveFilename); return multipartFile; }
@Override public void setServletContext(ServletContext servletContext) { if (!isUploadTempDirSpecified()) { getFileItemFactory().setRepository(WebUtils.getTempDir(servletContext)); } }
@Override public byte[] getBytes() { if (!isAvailable()) { throw new IllegalStateException("File has been moved - cannot be read again"); } byte[] bytes = this.fileItem.get(); return (bytes != null ? bytes : new byte[0]); }
/** * Determine the encoding for the given request. * Can be overridden in subclasses. * <p>The default implementation checks the request encoding, * falling back to the default encoding specified for this resolver. * @param request current HTTP request * @return the encoding for the request (never {@code null}) * @see javax.servlet.ServletRequest#getCharacterEncoding * @see #setDefaultEncoding */ protected String determineEncoding(HttpServletRequest request) { String encoding = request.getCharacterEncoding(); if (encoding == null) { encoding = getDefaultEncoding(); } return encoding; }
/** * Determine the default encoding to use for parsing requests. * @see #setDefaultEncoding */ protected String getDefaultEncoding() { String encoding = getFileUpload().getHeaderEncoding(); if (encoding == null) { encoding = WebUtils.DEFAULT_CHARACTER_ENCODING; } return encoding; }
@Override public void cleanupMultipart(MultipartHttpServletRequest request) { if (!(request instanceof AbstractMultipartHttpServletRequest) || ((AbstractMultipartHttpServletRequest) request).isResolved()) { try { cleanupFileItems(request.getMultiFileMap()); } catch (Throwable ex) { logger.warn("Failed to perform multipart cleanup for servlet request", ex); } } }
@Test public void withApplicationContext() throws Exception { doTestWithApplicationContext(false); }
@Override public String getString(String encoding) throws UnsupportedEncodingException { return new String(get(), encoding); }
@Override protected void initializeMultipart() { MultipartParsingResult parsingResult = parseRequest(request); setMultipartFiles(parsingResult.getMultipartFiles()); setMultipartParameters(parsingResult.getMultipartParameters()); setMultipartParameterContentTypes(parsingResult.getMultipartParameterContentTypes()); } };
@Bean public MultipartResolver multipartResolver() { return new CommonsMultipartResolver(); } }
/** * Instantiate a new CommonsFileUploadSupport with its * corresponding FileItemFactory and FileUpload instances. * @see #newFileItemFactory * @see #newFileUpload */ public CommonsFileUploadSupport() { this.fileItemFactory = newFileItemFactory(); this.fileUpload = newFileUpload(getFileItemFactory()); }
/** * Create a {@link CommonsMultipartFile} wrapper for the given Commons {@link FileItem}. * @param fileItem the Commons FileItem to wrap * @return the corresponding CommonsMultipartFile (potentially a custom subclass) * @since 4.3.5 * @see #setPreserveFilename(boolean) * @see CommonsMultipartFile#setPreserveFilename(boolean) */ protected CommonsMultipartFile createMultipartFile(FileItem fileItem) { CommonsMultipartFile multipartFile = new CommonsMultipartFile(fileItem); multipartFile.setPreserveFilename(this.preserveFilename); return multipartFile; }
/** * Constructor for standalone usage. Determines the servlet container's * temporary directory via the given ServletContext. * @param servletContext the ServletContext to use */ public CommonsMultipartResolver(ServletContext servletContext) { this(); setServletContext(servletContext); }
@Override public InputStream getInputStream() throws IOException { if (!isAvailable()) { throw new IllegalStateException("File has been moved - cannot be read again"); } InputStream inputStream = this.fileItem.getInputStream(); return (inputStream != null ? inputStream : StreamUtils.emptyInput()); }
@Test public void withApplicationContextAndLazyResolution() throws Exception { doTestWithApplicationContext(true); }