public final class MultipartBodyBuilder extends Object
MultiValueMap<String, HttpEntity>. Parts may be concrete values or
 via asynchronous types such as Reactor Mono, Flux, and
 others registered in the
 ReactiveAdapterRegistry.
 This builder is intended for use with the reactive
 WebClient.
 For multipart requests with the RestTemplate, simply create and
 populate a MultiValueMap<String, HttpEntity> as shown in the Javadoc for
 FormHttpMessageConverter
 and in the
 reference docs.
 
Below are examples of using this builder:
 // Add form field
 MultipartBodyBuilder builder = new MultipartBodyBuilder();
 builder.part("form field", "form value").header("foo", "bar");
 // Add file part
 Resource image = new ClassPathResource("image.jpg");
 builder.part("image", image).header("foo", "bar");
 // Add content (e.g. JSON)
 Account account = ...
 builder.part("account", account).header("foo", "bar");
 // Add content from Publisher
 Mono<Account> accountMono = ...
 builder.asyncPart("account", accountMono).header("foo", "bar");
 // Build and use
 MultiValueMap<String, HttpEntity<?>> multipartBody = builder.build();
 Mono<Void> result = webClient.post()
     .uri("...")
     .body(multipartBody)
     .retrieve()
     .bodyToMono(Void.class)
 | Modifier and Type | Class and Description | 
|---|---|
| static interface  | MultipartBodyBuilder.PartBuilderBuilder that allows for further customization of part headers. | 
| Constructor and Description | 
|---|
| MultipartBodyBuilder()Creates a new, empty instance of the  MultipartBodyBuilder. | 
| Modifier and Type | Method and Description | 
|---|---|
| <T,P extends org.reactivestreams.Publisher<T>> | asyncPart(String name,
         P publisher,
         Class<T> elementClass)Add a part from  Publishercontent. | 
| <T,P extends org.reactivestreams.Publisher<T>> | asyncPart(String name,
         P publisher,
         ParameterizedTypeReference<T> typeReference)Variant of  asyncPart(String, Publisher, Class)with aParameterizedTypeReferencefor the element type information. | 
| MultiValueMap<String,HttpEntity<?>> | build()Return a  MultiValueMapwith the configured parts. | 
| MultipartBodyBuilder.PartBuilder | part(String name,
    Object part)Add a part where the Object may be:
 
 String -- form field
  Resource-- file part
 Object -- content to be encoded (e.g. | 
| MultipartBodyBuilder.PartBuilder | part(String name,
    Object part,
    MediaType contentType)Variant of  part(String, Object)that also accepts a MediaType. | 
public MultipartBodyBuilder()
MultipartBodyBuilder.public MultipartBodyBuilder.PartBuilder part(String name, Object part)
Resource -- file part
 HttpEntity -- part content and headers although generally it's
 easier to add headers through the returned builder
 Part -- a part from a server request
 name - the name of the part to addpart - the part datapublic MultipartBodyBuilder.PartBuilder part(String name, Object part, @Nullable MediaType contentType)
part(String, Object) that also accepts a MediaType.name - the name of the part to addpart - the part datacontentType - the media type to help with encoding the partpublic <T,P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, Class<T> elementClass)
Publisher content.name - the name of the part to addpublisher - a Publisher of content for the partelementClass - the type of elements contained in the publisherpublic <T,P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference)
asyncPart(String, Publisher, Class) with a
 ParameterizedTypeReference for the element type information.name - the name of the part to addpublisher - the part contentstypeReference - the type of elements contained in the publisherpublic MultiValueMap<String,HttpEntity<?>> build()
MultiValueMap with the configured parts.