MultipartFile与@requestbody一起时HTTP报错,"status": 415, "error": "Unsupported Media Type",

【例】比如下面例子,新增用户同时上传文件并持久化。

【代码】

controller接口定义:

public Response<Integer> saveTemplate(@RequestBody SignatureTemplateResource templateResource,
                                      MultipartFile file) {}

测试时发现swagger 的content type显示:

执行报错:

{ "timestamp": "2019-01-03T09:27:45.533+0000", "status": 415, "error": "Unsupported Media Type", "message": "Content type 'multipart/form-data;boundary=----WebKitFormBoundaryNq8sxBAWWDbNj1Bm;charset=UTF-8' not supported", "path": "/ms/api/v1/sc/signaturetemplate/save" }

 

【解决方案】:入参去掉@requestBody注解即可。

public Response<Integer> saveTemplate(SignatureTemplateResource templateResource,
                                      MultipartFile file) {}

【根本原因】首先了解下http Content-type的各种值的含义: https://blog.csdn.net/shinebar/article/details/54408020

这里的content-type的媒体类型为:multipart/form-data ,表示表单中进行文件上传。个人感觉是由于参数中的MultipartFile类型影响了requestbody本应所对应的content-type: application/json,感觉可能是MultipartFile的媒体类型优先级高,会覆盖application/json。

 

******各位了解真相的大佬发表一下*****

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值