1 16 17 package org.springframework.web.multipart.support; 18 19 import java.io.IOException ; 20 21 import javax.servlet.FilterChain ; 22 import javax.servlet.ServletException ; 23 import javax.servlet.http.HttpServletRequest ; 24 import javax.servlet.http.HttpServletResponse ; 25 26 import org.springframework.web.context.WebApplicationContext; 27 import org.springframework.web.context.support.WebApplicationContextUtils; 28 import org.springframework.web.filter.OncePerRequestFilter; 29 import org.springframework.web.multipart.MultipartHttpServletRequest; 30 import org.springframework.web.multipart.MultipartResolver; 31 32 60 public class MultipartFilter extends OncePerRequestFilter { 61 62 public static final String DEFAULT_MULTIPART_RESOLVER_BEAN_NAME = "filterMultipartResolver"; 63 64 private String multipartResolverBeanName = DEFAULT_MULTIPART_RESOLVER_BEAN_NAME; 65 66 67 71 public void setMultipartResolverBeanName(String multipartResolverBeanName) { 72 this.multipartResolverBeanName = multipartResolverBeanName; 73 } 74 75 79 protected String getMultipartResolverBeanName() { 80 return multipartResolverBeanName; 81 } 82 83 84 91 protected void doFilterInternal( 92 HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 93 throws ServletException , IOException { 94 95 MultipartResolver multipartResolver = lookupMultipartResolver(request); 96 97 HttpServletRequest processedRequest = request; 98 if (multipartResolver.isMultipart(processedRequest)) { 99 if (logger.isDebugEnabled()) { 100 logger.debug("Resolving multipart request [" + processedRequest.getRequestURI() + 101 "] with MultipartFilter"); 102 } 103 processedRequest = multipartResolver.resolveMultipart(processedRequest); 104 } 105 else { 106 if (logger.isDebugEnabled()) { 107 logger.debug("Request [" + processedRequest.getRequestURI() + "] is not a multipart request"); 108 } 109 } 110 111 try { 112 filterChain.doFilter(processedRequest, response); 113 } 114 finally { 115 if (processedRequest instanceof MultipartHttpServletRequest) { 116 multipartResolver.cleanupMultipart((MultipartHttpServletRequest) processedRequest); 117 } 118 } 119 } 120 121 129 protected MultipartResolver lookupMultipartResolver(HttpServletRequest request) { 130 return lookupMultipartResolver(); 131 } 132 133 141 protected MultipartResolver lookupMultipartResolver() { 142 if (logger.isDebugEnabled()) { 143 logger.debug("Using MultipartResolver '" + getMultipartResolverBeanName() + "' for MultipartFilter"); 144 } 145 WebApplicationContext wac = 146 WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); 147 return (MultipartResolver) wac.getBean(getMultipartResolverBeanName(), MultipartResolver.class); 148 } 149 150 } 151 | Popular Tags |