- 前端接口上传文件的时候,通常会将请求header的content-type设置为:multipart/form-data, 或者form表单提交的时候将enctype设置为"multipart/form-data" 。后端收到请求时由于请求体有@RequestBody 注解标识,通常会用application/json, application/xml处理content-type,此时会报编码格式的问题。
- 这时候可以使用@RequestPart参数来接收实体对象,@RequestParam来单个接收参数。
- @RequestPart这个注解用在multipart/form-data表单提交请求的方法上。@RequestParam也同样支持multipart/form-data请求。
- @RequestParam和@RequestPart的区别是:@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)
参数 |
说明 |
value |
绑定的参数名称,参数值为String类型。 |
name |
绑定的参数名称,参数值为String类型。name和value可以同时使用,但两者的值需一致,否则会出现错误。 |
required |
请求头中是否必须包含指定的值,默认值为true required为true时,如果请求头中缺少指定的值,则会抛出异常。 required为false时,如果请求头中缺少指定的值,则会返回null |
示例
@PostMapping("/updateGoods") @ResponseBody public void updateGoods(@RequestPart("goods") Goods good, @RequestPart("file") MultipartFile file) { ... } |