首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring5 webClient上传文件

如何使用Spring5 webClient上传文件
EN

Stack Overflow用户
提问于 2020-10-04 19:18:23
回答 1查看 1.2K关注 0票数 0

我尝试上传文件与webclient Spring5 (多部分/表单数据),但我得到400 Badrequest有我的代码(当我尝试与restTemplate都很好),不明白为什么不与webClient工作,任何帮助都是宝贵的,提前感谢…

代码语言:javascript
复制
MultipartBodyBuilder builder = new MultipartBodyBuilder();

builder.part("subject", parametres.getSubject());

builder.part("lifetime", parametres.getLifeTime());

builder.part("comment", parametres.getComment());

builder.part("encrypted", parametres.getEncrypted());

builder.part("file", new FileSystemResource(file)).filename(file.getName()) //file is a java.io.File`
ClientResponse response = getClient().post()
     .uri("/messages")
     .body(BodyInserters.fromMultipartData(builder.build()))
     .header(PlinePlexHeaderEnum.HTTP_HEADER_PROCURATION_USER_ID.value(), idUser))
     .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE)
     .exchange().block();
EN

回答 1

Stack Overflow用户

发布于 2020-10-04 21:01:31

试试这个:

代码语言:javascript
复制
  final WebClient webClient = webClientBuilder.build();
        webClient.post()
            .uri("http://hostname:port/messages")
            .contentType(MediaType.MULTIPART_FORM_DATA)
            .header(PlinePlexHeaderEnum.HTTP_HEADER_PROCURATION_USER_ID.value(), idUser))
            .body(BodyInserters.fromMultipartData(buildMultipartBody(file, parametres)))
            .retrieve()
            .bodyToMono(String.class)
            .block();
        }

        private MultiValueMap < String, HttpEntity << ? >> buildMultipartBody(private File file, private Parametres parametres) {
            MultipartBodyBuilder builder = new MultipartBodyBuilder();
            builder.part("file", new FileSystemResource(file));
            builder.part("subject", parametres.getSubject());       `
            builder.part("lifetime", parametres.getLifeTime());`
            builder.part("comment", parametres.getComment());   `
            builder.part("encrypted", parametres.getEncrypted());`
            return builder.build();
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64193940

复制
相关文章

相似问题

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