ファイルを含む複数のリストとプレーンテキストを含む複数のフィールドを持つコントローラーにオブジェクトを送信します。
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
郵便配達員では、本文をrawタイプに設定する必要があり、ドロップダウンからJSONを選択できます。同様の問題があり、これで問題が修正されました。 画面を表示
前述のとおり、dknight @RequestBodyは、DTO BeanをマップするJSONまたはXMLデータの使用を意味します。 MultipartFileの場合、JSONデータを使用できないため、@ RequestBodyを使用できません。 @ModelAttributeアノテーションで試してください。
作業サンプル:
@PostMapping("/promoters")
@Timed
public ResponseEntity<PromoterDTO> createPromoter(@ModelAttribute PromoterDTO promoterDTO) throws URISyntaxException { ... }
PromoterDTOの場合:
public class PromoterDTO implements Serializable {
private Long id;
private String name;
private String address;
private MultipartFile logo;
}
@RequestBodyの代わりに、次のような@ModelAttributeを使用します。
@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)
@ModelAttribute @Valid final ContributionNew<Photo> contribution
) {
@RequestBodyの代わりに、@ RequestParamを使用してください!!!