SpringWebFlux-内容类型';应用程序/xml';bodyType=org.springframework.web.multipart.MultipartFile不支持

SpringWebFlux-内容类型';应用程序/xml';bodyType=org.springframework.web.multipart.MultipartFile不支持,spring,spring-boot,spring-webflux,spring-web,Spring,Spring Boot,Spring Webflux,Spring Web,我正在使用springwebflux并希望上载文件。。。。只要springweb,一切都很好,但说到webflux,我一点也不知道哪里出了问题 注意区别。。。我正在使用: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId>

我正在使用
springwebflux
并希望上载文件。。。。只要
springweb
,一切都很好,但说到
webflux
,我一点也不知道哪里出了问题

注意区别。。。我正在使用:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
现在尝试使用
Spring webflux
执行相同操作会产生以下错误:

{
    "timestamp": "2019-04-11T13:31:01.705+0000",
    "path": "/upload",
    "status": 400,
    "error": "Bad Request",
    "message": "Required MultipartFile parameter 'file' is not present"
}

我从stackoverflow问题中发现,我必须使用
@RequestPart
而不是
@RequestParam
,但现在我得到了以下错误,我不知道为什么会发生这种情况

错误如下所示:

{
    "timestamp": "2019-04-11T12:27:59.687+0000",
    "path": "/uploadFile",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'application/xml' not supported for bodyType=org.springframework.web.multipart.MultipartFile"
}
即使使用
.txt
文件也会产生相同的错误:

{
    "timestamp": "2019-04-11T12:27:59.687+0000",
    "path": "/uploadFile",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'application/xml' not supported for bodyType=org.springframework.web.multipart.MultipartFile"
}
下面是邮递员配置n,非常简单,我只是通过一个post请求打电话,只修改了图中所示的主体

顺便说一下,我已经在application.properties上添加了所需的属性:)

作为最高审计机关:

DefaultServerWebExchange使用配置的
HttpMessageReader
将多部分/表单数据内容解析为多值映射

要以流方式解析多部分数据,可以使用从HttpMessageReader返回的流量

用几句话你就可以做这样的事情:

    @RequestMapping(path = "/uploadFile", method = RequestMethod.POST, 
        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Flux<String> uploadFile(@RequestBody Flux<Part> parts) {
    //...
    }
@RequestMapping(path=“/uploadFile”,method=RequestMethod.POST,
consumes=MediaType.MULTIPART\u FORM\u DATA\u VALUE)
公共通量上传文件(@RequestBody-Flux-parts){
//...
}

看看这个

如果你看答案,你会发现多部分的内容类型不能是application/xml。这就是问题所在。@JEY对于text/plain或我添加的任何文件,我都会遇到相同的错误,先生:)我认为您的请求有问题,因为我创建了一个示例项目,它只是work@JEY我遵循了本教程:)但他使用的是
springweb
我们使用的是
springwebflux
,这就是问题所在。我对SpringWeb使用了相同的请求,它可以工作:'(我整天都在为它排忧解难:(谢谢你Nikolay,我对这个非常陌生…我如何从部件内部获取文件:)?看看你已经了解到,从web切换到webflux不仅仅是更改工件ID;)Nikolay我有个问题吗?对于1GB文件,这可以正常工作,还是服务会崩溃?Webflux非常适合上传/下载大型文件。几个月前,有一个非常大的文件流,但我认为它现在是固定的。这完全取决于如何使用。
## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring.servlet.multipart.enabled=true
# Threshold after which files are written to disk.
spring.servlet.multipart.file-size-threshold=2KB
# Max file size.
spring.servlet.multipart.max-file-size=200MB
# Max Request Size
spring.servlet.multipart.max-request-size=215MB
    @RequestMapping(path = "/uploadFile", method = RequestMethod.POST, 
        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Flux<String> uploadFile(@RequestBody Flux<Part> parts) {
    //...
    }