如何解决如何使用Spring 5 WebClient上传文件
我尝试使用webClient Spring5(multipart / form-data)上传文件,但是我得到了400 Badrequest,这是我的代码(当我尝试使用restTemplate都可以正常工作时),不明白为什么不能与webclient一起使用,任何帮助是宝贵的,在此先感谢...
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();
解决方法
尝试一下:
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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。