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

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

MultipartFile与@requestbody一起时HTTP报错,

【代码】

controller接口定义:

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

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

MultipartFile与@requestbody一起时HTTP报错,

执行报错:

{ "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 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。

 

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

 

 

 

你可能感兴趣的:(MultipartFile与@requestbody一起时HTTP报错,"status": 415, "error": "Unsupported Media Type",)