Java Spring webflux WebClient将文件发布到客户端
我试图找出如何编写一个方法,将文件从webflux控制器发送到“常规”控制器 我经常会发现一个常见的错误,但我没有尝试过解决它 我从中发送文件的方法:Java Spring webflux WebClient将文件发布到客户端,java,aws-lambda,spring-webflux,Java,Aws Lambda,Spring Webflux,我试图找出如何编写一个方法,将文件从webflux控制器发送到“常规”控制器 我经常会发现一个常见的错误,但我没有尝试过解决它 我从中发送文件的方法: @GetMapping("process") public Flux<String> process() throws MalformedURLException { final UrlResource resource = new UrlResource("file:/tmp/document.pdf"); Mul
@GetMapping("process")
public Flux<String> process() throws MalformedURLException {
final UrlResource resource = new UrlResource("file:/tmp/document.pdf");
MultiValueMap<String, UrlResource> data = new LinkedMultiValueMap<>();
data.add("file", resource);
return webClient.post()
.uri(LAMBDA_ENDPOINT)
.contentType(MediaType.MULTIPART_FORM_DATA)
.body(BodyInserters.fromMultipartData(data))
.exchange()
.flatMap(response -> response.bodyToMono(String.class))
.flux();
}
从lambda回来
我只是错误地设置了文件的发送,还是需要在API网关上配置一些东西以允许在中使用请求参数?这对我来说是一个有趣的问题。由于我在接收端使用lambda函数,并使用aws无服务器java容器spring,我实际上不得不手动声明
多部分解析器
一旦我添加了,我问题中的代码就正常工作了
@Bean
public MultipartResolver multipartResolver() {
return new CommonsMultipartResolver();
}
到我的配置
也许有人会偶然发现这一点,并发现它很有用 您的解决方案对于大文件上传是否有效?
{
"timestamp":1549395273838,
"status":400,
"error":"Bad Request",
"message":"Required request part 'file' is not present",
"path":"/detect-face"
}
@Bean
public MultipartResolver multipartResolver() {
return new CommonsMultipartResolver();
}