多子文件参数顺序优先级导致错误

时间:2018-01-03 14:51:30

标签: spring-boot multipartform-data

基本上,我在Spring Boot中向控制器发送两个参数,一个是String,另一个是文件。在操作中,当我首先收到文件然后接收字符串时,就像这样

@RequestMapping(value = "/updatemedia", method = RequestMethod.PATCH,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> updateMedia(@RequestParam(value ="file") MultipartFile fileToUpload , @RequestParam(value = "keyId") String keyId )

一切都很好,我能够正确访问String和文件。

但是当我改变参数的顺序时,就像这样

@RequestMapping(value = "/updatemedia", method = RequestMethod.PATCH,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> updateMedia( @RequestParam(value = "keyId") String keyId , @RequestParam(value ="file") MultipartFile fileToUpload )

并通过Postman发送参数,我正在点击以下错误enter image description here

我研究了很多,但我无法理解这种行为。

1 个答案:

答案 0 :(得分:0)

因为您将身份keyId发送到@RequestParam,因为它被声明为@RequestParam https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html@RequestPart无需处理请求正文,它已在请求网址中传递。 您的示例如何,第一种方法可行,因为您的方法需要一个python manage.py runserver --noreload ,其他方法将被忽略。