簡體   English   中英

如何使用 Spring 5 webClient 上傳文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM