Postman - 所需的 MultipartFile 参数不存在 - Spring,Java

Edit

This question is different from: jQuery Ajax file upload : Required MultipartFile parameter 'file' is not present The difference is that they use jQuery and Ajax, while I use a REST client - 'Postman'

So instead of setting Content-Type to false, I had to remove it altogether.

Also, when searching for answers about 'Postman', I believe people will skip questions that have the words jQuery and Ajax in them, this is what happened to me

End Edit

I'm using Spring MVC web application on Java8 and running it on tomcat7.x. Spring version is: 4.2.6.RELEASE and javax servlet version is: 3.0.1

context.xml

...

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- max upload size in bytes -->
    <property name="maxUploadSize" value="5242880" /> <!-- 5MB -->

    <!-- max size of file in memory (in bytes) -->
    <property name="maxInMemorySize" value="1048576" /> <!-- 1MB -->

</bean>

...

controller.java

...
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseStatus(value = HttpStatus.CREATED)
public void importTranslations(@RequestParam (name = "myfile") MultipartFile myfile) {
    myService.doSomething(myfile);
}
...

Here is the issue

I use Postman to send a *.zip file. The path is correct and everything looks good, but spring throws an exception: "Required MultipartFile parameter 'myfile' is not present"

Here is the screenshot from Postman: So the file is there and the key name is correct. Everything seems OK, and yet, I get the error

解决方案

After a lot of searching here in stackoverflow, I found this question: jQuery Ajax file upload : Required MultipartFile parameter 'file' is not present

I tried setting the Content-Type header in Postman to false and got an error. When I removed the Content-Type header, it worked!!

Hope this helps someone

相关文章