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

内容类型'multipart/form-data;boundary=----WebKitFormBoundary...‘不支持弹簧
EN

Stack Overflow用户
提问于 2018-07-14 10:17:19
回答 2查看 38.6K关注 0票数 9

Spring5.0.7: MVC,Data,Security。我配置multipartResolver

我发送下一个Ajax请求:

代码语言:javascript
复制
$.ajax({
    type: 'POST',
    cache: false,
    processData: false,
    contentType: false,
    url: '/api/v1/category/add',
    data: new FormData(form)
}).done(result=>{console.log(result);}).fail(result=>{
    console.error('ERROR:', result.responseJSON.httpStatus, result.responseJSON.message, result);
    self.toast.error('API Error.');
});

但是有一个错误:Content type 'multipart/form-data;boundary=----WebKitFormBoundary6xBCDjCtYYuUVR5c' not supported

为什么?我不明白为什么会发生错误。

主计长:

代码语言:javascript
复制
@RestController
@Secured("hasRole('ADMIN')")
@RequestMapping(value = "/api/v1")
public class ApiController {

    private static final Logger LOGGER = LogManager.getLogger(ApiController.class);

    @PostMapping(value = "/category/add", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    private Response categoryAdd(Response response, @RequestBody CategoryAddForm categoryAddForm) {
        LOGGER.info(categoryAddForm.toString());
        return response;
    }

}

CategoryAddForm:

代码语言:javascript
复制
public class CategoryAddForm {

    private String name;

    private String description;

    private MultipartFile preview;

    public CategoryAddForm() { }

    public CategoryAddForm(String name, String description, MultipartFile preview) {
        this.name = name;
        this.description = description;
        this.preview = preview;
    }

    public String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

    public MultipartFile getPreview() {
        return preview;
    }
}

我不知道还能写些什么,但需要更多的文字。(

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-02 00:17:29

在控制器中,使用@RequestParam而不是@RequestBody。

同样的问题对我来说很有效。有关更多信息,请参见此SO answer

票数 13
EN

Stack Overflow用户

发布于 2018-07-14 16:22:36

您需要添加这个maven依赖项commons-fileupload:commons-fileupload:1.3.x并声明MultipartResolver bean。

代码语言:javascript
复制
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxUploadSize(100000);
    return multipartResolver;
}

以上方法是针对Spring控制器的。如果您想为异步Spring控制器做些什么,请参考本文。http://www.baeldung.com/spring-file-upload

希望能帮上忙!

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

https://stackoverflow.com/questions/51337489

复制
相关文章

相似问题

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