web-dev-qa-db-ja.com

コンテンツタイプ 'multipart / form-data; boundary = ----...; charset = UTF-8'はサポートされていません

ファイルを含む複数のリストとプレーンテキストを含む複数のフィールドを持つコントローラーにオブジェクトを送信します。

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
9
sdafasdf

郵便配達員では、本文をrawタイプに設定する必要があり、ドロップダウンからJSONを選択できます。同様の問題があり、これで問題が修正されました。 画面を表示

12
plue

前述のとおり、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;
    }
8
uncleBounty

@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
) {
0
Chirag Shah

@RequestBodyの代わりに、@ RequestParamを使用してください!!!

0
Shadab Reza