public class MultipartFilter extends OncePerRequestFilter
MultipartResolver
.
in the root web application context.
Looks up the MultipartResolver in Spring's root web application context.
Supports a "multipartResolverBeanName" filter init-param in web.xml
;
the default bean name is "filterMultipartResolver".
If no MultipartResolver bean is found, this filter falls back to a default
MultipartResolver: StandardServletMultipartResolver
for Servlet 3.0,
based on a multipart-config section in web.xml
.
Note however that at present the Servlet specification only defines how to
enable multipart configuration on a Servlet and as a result multipart request
processing is likely not possible in a Filter unless the Servlet container
provides a workaround such as Tomcat's "allowCasualMultipartParsing" property.
MultipartResolver lookup is customizable: Override this filter's
lookupMultipartResolver
method to use a custom MultipartResolver
instance, for example if not using a Spring web application context.
Note that the lookup method should not create a new MultipartResolver instance
for each call but rather return a reference to a pre-built instance.
Note: This filter is an alternative to using DispatcherServlet's
MultipartResolver support, for example for web applications with custom web views
which do not use Spring's web MVC, or for custom filters applied before a Spring MVC
DispatcherServlet (e.g. HiddenHttpMethodFilter
).
In any case, this filter should not be combined with servlet-specific multipart resolution.
setMultipartResolverBeanName(java.lang.String)
,
lookupMultipartResolver(HttpServletRequest)
,
MultipartResolver
,
DispatcherServlet
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_MULTIPART_RESOLVER_BEAN_NAME
The default name for the multipart resolver bean.
|
private MultipartResolver |
defaultMultipartResolver |
private java.lang.String |
multipartResolverBeanName |
ALREADY_FILTERED_SUFFIX
logger
Constructor and Description |
---|
MultipartFilter() |
Modifier and Type | Method and Description |
---|---|
protected void |
doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
Check for a multipart request via this filter's MultipartResolver,
and wrap the original request with a MultipartHttpServletRequest if appropriate.
|
protected java.lang.String |
getMultipartResolverBeanName()
Return the bean name of the MultipartResolver to fetch from Spring's
root application context.
|
protected MultipartResolver |
lookupMultipartResolver()
Look for a MultipartResolver bean in the root web application context.
|
protected MultipartResolver |
lookupMultipartResolver(HttpServletRequest request)
Look up the MultipartResolver that this filter should use,
taking the current HTTP request as argument.
|
void |
setMultipartResolverBeanName(java.lang.String multipartResolverBeanName)
Set the bean name of the MultipartResolver to fetch from Spring's
root application context.
|
doFilter, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
public static final java.lang.String DEFAULT_MULTIPART_RESOLVER_BEAN_NAME
private final MultipartResolver defaultMultipartResolver
private java.lang.String multipartResolverBeanName
public void setMultipartResolverBeanName(java.lang.String multipartResolverBeanName)
protected java.lang.String getMultipartResolverBeanName()
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, java.io.IOException
All later elements in the filter chain, most importantly servlets, benefit from proper parameter extraction in the multipart case, and are able to cast to MultipartHttpServletRequest if they need to.
doFilterInternal
in class OncePerRequestFilter
ServletException
java.io.IOException
protected MultipartResolver lookupMultipartResolver(HttpServletRequest request)
The default implementation delegates to the lookupMultipartResolver
without arguments.
lookupMultipartResolver()
protected MultipartResolver lookupMultipartResolver()
This can be overridden to use a custom MultipartResolver instance, for example if not using a Spring web application context.