Spring Boot-多部分-不支持的媒体类型
我想在一个帖子请求中发送一个文件和一个json模型。
我的请求映射如下所示:
@PostMapping("{id}/files") public MyOutput create(@PathVariable String id, @RequestPart("request") MyInput input, @RequestPart("file") MultipartFile file) {
// ...
}
我收到的错误:
{ "timestamp": "Feb 7, 2019, 3:18:50 PM",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/octet-stream' not supported",
"trace": "org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported...,
"path": "/tests/12345/files"
}
我的WebConfig:
@Override public void configureMessageConverters(final List<HttpMessageConverter<?>> converters) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.setPrettyPrinting().create();
final GsonHttpMessageConverter msgConverter = new GsonHttpMessageConverter();
msgConverter.setGson(gson);
msgConverter.setDefaultCharset(StandardCharsets.UTF_8);
converters.add(msgConverter);
converters.add(new StringHttpMessageConverter());
//
converters.add(new ByteArrayHttpMessageConverter());
converters.add(new FormHttpMessageConverter());
converters.add(new ResourceHttpMessageConverter());
}
回答:
您可以尝试使用代替
@RequestPart("file") MultipartFile file
用这个
@RequestParam(value = "file",required = false) MultipartFile file
并确保将请求类型设置为multipart / form-data。可以从邮递员的标题标签中进行设置。
如果需要使用多部分文件发送另一个对象,则可以将其作为字符串发送,然后可以将其转换为后端的对象。
@PostMapping("/upload") public void uploadFile(@Nullable @RequestParam(value = "file",required = false) MultipartFile file,
@RequestParam(value="input",required = false)String st)
{
ObjectMapper om=new ObjectMapper();
MyInput input =null;
try {
input=om.readValue(st,MyInput.class); //string st -> MyInput input
} catch (IOException e) {
e.printStackTrace();
}
}
以上是 Spring Boot-多部分-不支持的媒体类型 的全部内容, 来源链接: utcz.com/qa/416624.html