Multipart Request with MultipartFile as Optional Field - Spring MVC

file-upload, java, multipartform-data, spring-mvc

Solution

I had the same issue and just adding the `required=false` worked for me; because, I don't send a file all the time. Please find the sample code below,

@RequestMapping(value = "/", method = RequestMethod.POST, produces = "application/json")
public AModel createEntity(@Valid @ModelAttribute MyInsertForm myInsertForm, @RequestParam(value ="file", required=false) MultipartFile file) {
    // coding..
}  

Problem

I am using Spring MVC on a J2EE Web application. I have created a method that bounds the request body to a model like the above ``` @RequestMapping(value = "/", method = RequestMethod.POST, produces = "application/json") public AModel createEntity(@Valid @ModelAttribute MyInsertForm myInsertForm) { // coding.. } ``` Everything are working great and when i include a property of type MultipartFile in the MyEntityForm, then i have to make the request with content type "multipart/form-data". Also, everything are working great with this scenario too. The problem i am facing is that i would like to have the MultipartFile property as optional. When a client request include a file my method works great but when a client request does not include a file spring throws a HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly Is there any way to solve this issue without creating two methods on my controller (one with a MultipartFile and another without)?

Original source

Related problems