Pranav C Balan Pranav C Balan - 5 months ago 38
Java Question

Using @RequestParam for multipartfile is a right way?

I'm developing a spring mvc application and I want to handle multipart request in my controller. In the request I'm passing

MultiPartFile
also, currently I'm using
@RequestParam
to get the file paramaeter, the method look like,

@RequestMapping(method = RequestMethod.POST)
public def save(
@ModelAttribute @Valid Product product,
@RequestParam(value = "image", required = false) MultipartFile file) {
.....
}


Above code works well in my service and the file is getting on the server side. Now somewhere I seen that in case of file need to use
@RequestPart
annotation instead of
@RequestParam
. Is there anything wrong to use
@RequestParam
for file ? Or it may cause any kind of error in future?

Answer

It is nothing wrong using @RequestParam with Multipart file.

@RequestParam annotation can also be used to associate the part of a "multipart/form-data" request with a method argument supporting the same method argument types. The main difference is that when the method argument is not a String, @RequestParam relies on type conversion via a registered Converter or PropertyEditor while @RequestPart relies on HttpMessageConverters taking into consideration the 'Content-Type' header of the request part. @RequestParam is likely to be used with name-value form fields while @RequestPart is likely to be used with parts containing more complex content (e.g. JSON, XML).

See http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestPart.html

Comments