How to get MultipartHttpServletRequest from RequestContextHolder?

I configured Access Decision Manager to validate the request before servlet processing the key line: -

HttpServletRequest request = (HttpServletRequest) RequestContextHolder.currentRequestAttributes().getRequest(); 

Things are good. However, when the request is enctype="multipart/form-data" , how can I get MultipartHttpServletRequest when RequestContextHolder.currentRequestAttributes().getRequest() returns HttpServletRequest ?

I am using spring 2.5.

+4
source share
5 answers

MultipartHttpServletRequest is an n Spring-specific interface for handling multi-factorial form submissions. The default implementation is DefaultMultipartHttpServletRequest , which has a constructor that accepts an HttpServletRequest .

So:

 HttpServletRequest originalRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); MultipartHttpServletRequest multiPartRequest = new DefaultMultipartHttpServletRequest(originalRequest); 
+2
source

In addition to the availability

 <form method=<method> action=<url> enctype="multipart/form-data"></form> 

you must have

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 

in the spring configuration file.

Here is a good tutorial on the same

http://techdive.in/spring/spring-file-upload

+2
source

Have you tried casting on MultipartHttpServletRequest ?

0
source

If you use spring -mvc make sure you put this line

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 

in your app-config.xml.

It worked for me.

0
source

I do not think you can get DefaultMultipartHttpServletRequest from RequestContextHolder. DefaultMultipartHttpServletRequest really implements HttpServletRequest. But there are 2 request instances if you use CommonsMultipartResolver. One instance of DefaultMultipartHttpServletRequest and another instance of HttpServletRequest. Actually, I don’t know how to get the first instance from RequestContextHolder. You can get a second instance from it.

0
source

All Articles