Class CommonsMultipartResolver
- java.lang.Object
- org.springframework.web.multipart.commons.CommonsFileUploadSupport
- org.springframework.web.multipart.commons.CommonsMultipartResolver
- All Implemented Interfaces:
Aware
,ServletContextAware
,MultipartResolver
public class CommonsMultipartResolver extends CommonsFileUploadSupport implements MultipartResolver, ServletContextAware
Servlet-basedMultipartResolver
implementation for Apache Commons FileUpload 1.2 or above.Provides "maxUploadSize", "maxInMemorySize" and "defaultEncoding" settings as bean properties (inherited from
CommonsFileUploadSupport
). See corresponding ServletFileUpload / DiskFileItemFactory properties ("sizeMax", "sizeThreshold", "headerEncoding") for details in terms of defaults and accepted values.Saves temporary files to the servlet container's temporary directory. Needs to be initialized either by an application context or via the constructor that takes a ServletContext (for standalone usage).
- Since:
- 29.09.2003
- Author:
- Trevor D. Cook, Juergen Hoeller
- See Also:
CommonsMultipartResolver(ServletContext)
,setResolveLazily(boolean)
,CommonsPortletMultipartResolver
,ServletFileUpload
,DiskFileItemFactory
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.web.multipart.commons.CommonsFileUploadSupport
CommonsFileUploadSupport.MultipartParsingResult
Field Summary
Fields inherited from class org.springframework.web.multipart.commons.CommonsFileUploadSupport
logger
Constructor Summary
Constructors Constructor Description CommonsMultipartResolver()
Constructor for use as bean.CommonsMultipartResolver(ServletContext servletContext)
Constructor for standalone usage.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cleanupMultipart(MultipartHttpServletRequest request)
Cleanup any resources used for the multipart handling, like a storage for the uploaded files.protected String
determineEncoding(HttpServletRequest request)
Determine the encoding for the given request.boolean
isMultipart(HttpServletRequest request)
Determine if the given request contains multipart content.protected org.apache.commons.fileupload.FileUpload
newFileUpload(org.apache.commons.fileupload.FileItemFactory fileItemFactory)
Initialize the underlyingorg.apache.commons.fileupload.servlet.ServletFileUpload
instance.protected CommonsFileUploadSupport.MultipartParsingResult
parseRequest(HttpServletRequest request)
Parse the given servlet request, resolving its multipart elements.MultipartHttpServletRequest
resolveMultipart(HttpServletRequest request)
Parse the given HTTP request into multipart files and parameters, and wrap the request inside aMultipartHttpServletRequest
object that provides access to file descriptors and makes contained parameters accessible via the standard ServletRequest methods.void
setResolveLazily(boolean resolveLazily)
Set whether to resolve the multipart request lazily at the time of file or parameter access.void
setServletContext(ServletContext servletContext)
Set theServletContext
that this object runs in.Methods inherited from class org.springframework.web.multipart.commons.CommonsFileUploadSupport
cleanupFileItems, createMultipartFile, getDefaultEncoding, getFileItemFactory, getFileUpload, isUploadTempDirSpecified, newFileItemFactory, parseFileItems, prepareFileUpload, setDefaultEncoding, setMaxInMemorySize, setMaxUploadSize, setMaxUploadSizePerFile, setPreserveFilename, setUploadTempDir
Constructor Detail
CommonsMultipartResolver
public CommonsMultipartResolver()
Constructor for use as bean. Determines the servlet container's temporary directory via the ServletContext passed in as through the ServletContextAware interface (typically by a WebApplicationContext).
CommonsMultipartResolver
public CommonsMultipartResolver(ServletContext servletContext)
Constructor for standalone usage. Determines the servlet container's temporary directory via the given ServletContext.- Parameters:
servletContext
- the ServletContext to use
Method Detail
setResolveLazily
public void setResolveLazily(boolean resolveLazily)
Set whether to resolve the multipart request lazily at the time of file or parameter access.Default is "false", resolving the multipart elements immediately, throwing corresponding exceptions at the time of the
resolveMultipart(javax.servlet.http.HttpServletRequest)
call. Switch this to "true" for lazy multipart parsing, throwing parse exceptions once the application attempts to obtain multipart files or parameters.
newFileUpload
protected org.apache.commons.fileupload.FileUpload newFileUpload(org.apache.commons.fileupload.FileItemFactory fileItemFactory)
Initialize the underlyingorg.apache.commons.fileupload.servlet.ServletFileUpload
instance. Can be overridden to use a custom subclass, e.g. for testing purposes.- Specified by:
newFileUpload
in classCommonsFileUploadSupport
- Parameters:
fileItemFactory
- the Commons FileItemFactory to use- Returns:
- the new ServletFileUpload instance
setServletContext
public void setServletContext(ServletContext servletContext)
Description copied from interface:ServletContextAware
Set theServletContext
that this object runs in.Invoked after population of normal bean properties but before an init callback like InitializingBean's
afterPropertiesSet
or a custom init-method. Invoked after ApplicationContextAware'ssetApplicationContext
.- Specified by:
setServletContext
in interfaceServletContextAware
- Parameters:
servletContext
- ServletContext object to be used by this object- See Also:
InitializingBean.afterPropertiesSet()
,ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
isMultipart
public boolean isMultipart(HttpServletRequest request)
Description copied from interface:MultipartResolver
Determine if the given request contains multipart content.Will typically check for content type "multipart/form-data", but the actually accepted requests might depend on the capabilities of the resolver implementation.
- Specified by:
isMultipart
in interfaceMultipartResolver
- Parameters:
request
- the servlet request to be evaluated- Returns:
- whether the request contains multipart content
resolveMultipart
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException
Description copied from interface:MultipartResolver
Parse the given HTTP request into multipart files and parameters, and wrap the request inside aMultipartHttpServletRequest
object that provides access to file descriptors and makes contained parameters accessible via the standard ServletRequest methods.- Specified by:
resolveMultipart
in interfaceMultipartResolver
- Parameters:
request
- the servlet request to wrap (must be of a multipart content type)- Returns:
- the wrapped servlet request
- Throws:
MultipartException
- if the servlet request is not multipart, or if implementation-specific problems are encountered (such as exceeding file size limits)- See Also:
MultipartRequest.getFile(java.lang.String)
,MultipartRequest.getFileNames()
,MultipartRequest.getFileMap()
,ServletRequest.getParameter(java.lang.String)
,ServletRequest.getParameterNames()
,ServletRequest.getParameterMap()
parseRequest
protected CommonsFileUploadSupport.MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException
Parse the given servlet request, resolving its multipart elements.- Parameters:
request
- the request to parse- Returns:
- the parsing result
- Throws:
MultipartException
- if multipart resolution failed.
determineEncoding
protected String determineEncoding(HttpServletRequest request)
Determine the encoding for the given request. Can be overridden in subclasses.The default implementation checks the request encoding, falling back to the default encoding specified for this resolver.
- Parameters:
request
- current HTTP request- Returns:
- the encoding for the request (never
null
) - See Also:
ServletRequest.getCharacterEncoding()
,CommonsFileUploadSupport.setDefaultEncoding(java.lang.String)
cleanupMultipart
public void cleanupMultipart(MultipartHttpServletRequest request)
Description copied from interface:MultipartResolver
Cleanup any resources used for the multipart handling, like a storage for the uploaded files.- Specified by:
cleanupMultipart
in interfaceMultipartResolver
- Parameters:
request
- the request to cleanup resources for