Search code examples
springfilemultipart

Getting MissingServletRequestParameterException during File upload


My Controller looks like this

@RequestMapping (value = { "/link_multiple" } , method = 
RequestMethod.POST)
public ModelAndView linkMultipleVideo(
    @RequestParam ("csv_file") final MultipartFile file) {

Here is my freemarker template

<input type="file" class="csv_file" name="csv_file"  id="csv_file" accept=".csv"/>
    <a class="file-link" href="javascript:void(0);">Choose File</a>
    <span class='input-file-select'></span>
  </div>

I have also added Multipart Resolver configuration to

<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="2097152"/>
 </bean>

Also added below filter in web.xml

<filter>
    <filter-name>multipartFilter</filter-name>
    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>multipartFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Below is the Exception that i am getting.

org.springframework.web.bind.MissingServletRequestParameterException: Required MultipartFile parameter 'csv_file' is not present
[tomcat:launch]     at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:255)
[tomcat:launch]     at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:95)
[tomcat:launch]     at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79)
[tomcat:launch]     at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:157)
[tomcat:launch]     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:124)
[tomcat:launch]     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)

Solution

  • I got it to work by Removing filter from web.xml.

    <filter>
        <filter-name>multipartFilter</filter-name>
        <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>multipartFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>