首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不支持内容类型'multipart/form-data;boundary=----...;charset=UTF-8‘

不支持内容类型'multipart/form-data;boundary=----...;charset=UTF-8‘
EN

Stack Overflow用户
提问于 2018-01-02 00:07:40
回答 8查看 79K关注 0票数 26

我想向控制器发送一个对象,该对象有几个包含文件的列表和几个纯文本字段。

代码语言:javascript
复制
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发送数据。然而,他却抛弃了我

代码语言:javascript
复制
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundarywY7ByvgonAjDoaCT;charset=UTF-8' not supported

我应该为此控制器设置什么内容类型,才能发送包含纯文本字段和带有文件的列表的对象?

如果我在标题中设置标题

代码语言:javascript
复制
Content-type: multipart/form-data; charset=utf-8

它把我扔进了控制台

代码语言:javascript
复制
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
EN

回答 8

Stack Overflow用户

发布于 2018-08-23 17:13:39

如上所述,dknight @RequestBody意味着在映射DTO bean时使用JSON或XML数据。对于MultipartFile,你不能使用JSON数据,所以你不能使用@RequestBody。尝试使用@ModelAttribute注释。

工作示例:

代码语言:javascript
复制
@PostMapping("/promoters")
@Timed
public ResponseEntity<PromoterDTO> createPromoter(@ModelAttribute PromoterDTO promoterDTO) throws URISyntaxException { ... }

使用这样的PromoterDTO:

代码语言:javascript
复制
    public class PromoterDTO implements Serializable {

        private Long id; 

        private String name;

        private String address;

        private MultipartFile logo;
    }
票数 35
EN

Stack Overflow用户

发布于 2018-04-09 23:42:48

在Postman中,您需要将正文设置为raw类型,并且可以从下拉列表中选择JSON,我有一个类似的问题,这解决了我的问题。

票数 26
EN

Stack Overflow用户

发布于 2019-07-24 14:44:34

使用@RequestParam!而不是@RequestBody

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48051177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档