【发布时间】:2018-06-11 13:56:51
【问题描述】:
我想向控制器发送一个对象,该对象具有多个文件列表和多个纯文本字段。
public class ContributionNew<T extends MovieInfoDTO> {
private List<T> elementsToAdd;
private Map<Long, T> elementsToUpdate;
private Set<Long> idsToDelete;
private Set<String> sources;
private String comment;
}
public class Photo extends MovieInfoDTO {
private MultipartFile photo;
}
@PostMapping(value = "/{id}/contributions/photos")
@ResponseStatus(HttpStatus.CREATED)
public
ResponseEntity<Void> createPhotoContribution(
@ApiParam(value = "The movie ID", required = true)
@PathVariable("id") final Long id,
@ApiParam(value = "The contribution", required = true)
@RequestBody @Valid final ContributionNew<Photo> contribution
) {
我正在使用postman 发送数据。然而,他把我扔了
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundarywY7ByvgonAjDoaCT;charset=UTF-8' not supported
我应该为这个控制器设置什么内容类型,以便我可以发送一个包含纯文本字段和文件列表的对象?
如果我在标题中设置标题
Content-type: multipart/form-data; charset=utf-8
它把我扔进控制台
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
【问题讨论】:
-
不知道这是否重要,但
multipart/form-data不应该有charset。它确实需要boundary。见WWW Specification。 -
不过,更有可能是
boundary中的----引起了麻烦,因为--对边界标记有特殊含义。 -
@RequestBody 表示将 JSON 数据解析为 map 或 java bean,仅支持内容类型为 "application/json;charset=UTF-8"
标签: java spring rest spring-mvc spring-boot