[英]How to upload file with 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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.