Spring WebFlux File Upload: Unsupported Media Type 415 with Multipart upload(Spring WebFlux文件上传:不支持的媒体类型415,支持分块上传)
问题描述
我在使用Spring的反应性框架处理文件上传时遇到了一些问题。我认为我正在遵循文档,但无法摆脱此415/Unsupported Media Type问题。
我的控制器如下所示(如下面的示例:https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-multipart-forms)
package com.test.controllers;
import reactor.core.publisher.Flux;
import org.springframework.http.MediaType;
import org.springframework.http.codec.multipart.FilePart;
import org.springframework.http.codec.multipart.Part;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Flux<String> uploadHandler(@RequestBody Flux<Part> parts) {
return parts
.filter(part -> part instanceof FilePart)
.ofType(FilePart.class)
.log()
.flatMap(p -> Flux.just(p.filename()));
}
}
发送到此终结点时,始终会得到相同的输出:
curl -X POST -F "data=@basic.ppt" http://localhost:8080/upload
---
"Unsupported Media Type","message":"Content type 'multipart/form-data;boundary=------------------------537139718d79303c;charset=UTF-8' not supported"
我也尝试使用@RequestPart("data"),但收到类似的Unsupported Media Type错误,只是文件的内容类型不同。
似乎Spring在将它们转换为Part时遇到问题?我被困住了--任何帮助都是正确的!
推荐答案
感谢@Kojot的回答,但在这种情况下,我发现问题是除了spring-webflux之外,我还短暂地包含了spring-webmvc。您的解决方案可能也会奏效,但我想坚持使用控制器样式,因此最终强制将spring-webmvc排除在build.gradle:
configurations {
implementation {
exclude group: 'org.springframework', module: 'spring-webmvc'
}
}
之后,它按照文档所述工作。
这篇关于Spring WebFlux文件上传:不支持的媒体类型415,支持分块上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring WebFlux文件上传:不支持的媒体类型415,支持
基础教程推荐
- Java ECDSAwithSHA256 签名长度不一致 2022-01-01
- 将 double 转换为 Int,向下舍入 2022-01-01
- 控制台应用程序中的 Java 键盘输入解析 2022-01-01
- 在springboot中如何给mybatis加拦截器 2023-04-29
- 将 Windows 证书导入 Java 2022-01-01
- doFilter()是在servlet的工作完成之前还是之后执行的? 2022-01-01
- JPA惰性列表上的流 2022-01-01
- 如何在相机中应用自定义滤镜 [Surfaceview 预览]. 2022-01-01
- Maven:无效的目标版本:10 2022-01-01
- 在java中使用xpath和selenium解析HTML表格数据 2022-01-01
