【问题标题】:Multipartfile parameter order precedence causing errorMultipartfile 参数顺序优先级导致错误
【发布时间】:2018-06-13 06:26:24
【问题描述】:

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

@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 )

一切正常,我可以正确访问字符串和文件。

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

@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 )

并通过邮递员发送参数,我遇到以下错误

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

【问题讨论】:

  • 不管怎样都可以。
  • 正如@pvpkiran 已经说过的那样。两者都应该工作。请在 github 上提供一个最小示例以重现此示例。只需提供两个具有这两个端点的控制器,我将看看它。

标签: spring-boot multipartform-data


【解决方案1】:

因为您在正文中发送 keyId 而它被声明为 @RequestParam https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html@RequestParam 与请求体无关,它是在请求 url 中传递的。 你的例子怎么样,第一种方法有效,因为你的方法需要一个@RequestPart,其他的都被忽略了。

【讨论】:

猜你喜欢
  • 2010-12-01
  • 2020-09-29
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多