Java Spring webflux WebClient将文件发布到客户端

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

我试图找出如何编写一个方法,将文件从webflux控制器发送到“常规”控制器

我经常会发现一个常见的错误,但我没有尝试过解决它

我从中发送文件的方法:

@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();
}