摘要:controller @requestbody 包含MultipartFile 类型属性报错解决方案
报错原因
前端在接口上传文件的同时会将请求header的content-type设置为:multipart/form-data
或者form表单提交的时候将enctype设置为"multipart/form-data" 。
后端收到请求时由于请求体有@RequestBody 注解标识,通常会用application/json, application/xml处理content-type
此时会报编码格式的问题就会报以下错误
{
"timestamp": 1565077141995,
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'multipart/form-data;boundary=--------------------------541536646861632702696448;charset=UTF-8' not supported",
"path": "/fileUpload/picture"
}
经过分析:
MultipartFile这样的multipart/form-data媒体类型优先级会高于application/json,
而配置@RequestBody 感觉使用一个低优先级的handle一个高优先级的从而报错。
所以在multipart/form-data媒体类型请求时将@RequestBody去掉就可以了。
换而言之你不能在一个接口中既要获取数据,也要获取文件,除非你不是用这样的方式。