json - Spring Boot REST 多部分请求(文件 + json)抛出 415 Unsupported Media Type 异常
问题描述
我正在使用 Spring Boot 版本 = 1.5.2.RELEASE。当我发送带有 json 对象的多部分文件以在邮递员中上传文件时,它会抛出 415 Unsupported Media Type 异常。
这是我的控制器类。
@RestController
@RequestMapping("/service/promotion/")
public class JobController {
....
....
....
@RequestMapping(value = "/job/test", method = RequestMethod.POST, produces = "application/json", consumes = "multipart/form-data")
public ResponseEntity<Object> createJobTest(@Valid @RequestBody JobRequest jobRequest,
@RequestParam(value = "file", required = false) MultipartFile multiPartFile) throws Exception {
我的 json 请求类。
public class JobRequest {
private String campaignKey;
private String communicationId;
private Integer channelId;
private String templateType;
private String subject;
private String frequencyControl;
private Integer leadsRequested;
private String keywordRelavance;
private String scheduledAt;
private String file;
private String updatedBy;
//getter and setter
}
但是当我从控制器类和邮递员中删除消耗时
@RequestMapping(value = "/job/test", method = RequestMethod.POST, produces = "application/json")
然后调试器进入控制器类,但多部分文件值 在请求对象中为空,如
我用谷歌搜索了很多已经发布的类似问题,但没有一个对我有帮助。请帮我解开这个谜团。
谢谢你。
解决方案
检查此文件上传以及 Jersey restful web 服务中的其他对象
另一种方法是您可以在文本中传递整个对象,就像在表单数据中传递文件并在对象中转换一样。
@RequestMapping(value = "/uploadDocs", method = RequestMethod.POST, produces = "application/json", consumes = "multipart/form-data")
public ResponseEntity<Object> methodName(@RequestParam("files") MultipartFile file, @RequestParam("anyKeyName") String objectString)
比您可以使用将字符串转换为对象
Class object = new ObjectMapper().readValue(objectString, Class.class);