Package org.springframework.http.client
Class MultipartBodyBuilder
java.lang.Object
org.springframework.http.client.MultipartBodyBuilder
Prepare the body of a multipart request, resulting in a
 
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)
 - Since:
 - 5.0.2
 - Author:
 - Arjen Poutsma, Rossen Stoyanchev, Sam Brannen
 - See Also:
 
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceBuilder that allows for further customization of part headers. - 
Constructor Summary
ConstructorsConstructorDescriptionCreates a new, empty instance of theMultipartBodyBuilder. - 
Method Summary
Modifier and TypeMethodDescription<T,P extends Publisher<T>> 
MultipartBodyBuilder.PartBuilderAdd a part fromPublishercontent.<T,P extends Publisher<T>> 
MultipartBodyBuilder.PartBuilderasyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference) Variant ofasyncPart(String, Publisher, Class)with aParameterizedTypeReferencefor the element type information.build()Return aMultiValueMapwith the configured parts.Add a part where the Object may be: String -- form fieldResource-- file part Object -- content to be encoded (e.g.Variant ofpart(String, Object)that also accepts a MediaType. 
- 
Constructor Details
- 
MultipartBodyBuilder
public MultipartBodyBuilder()Creates a new, empty instance of theMultipartBodyBuilder. 
 - 
 - 
Method Details
- 
part
Add a part where the Object may be:- String -- form field
 Resource-- file part- Object -- content to be encoded (e.g. to JSON)
 HttpEntity-- part content and headers although generally it's easier to add headers through the returned builderPart-- a part from a server request
- Parameters:
 name- the name of the part to addpart- the part data- Returns:
 - builder that allows for further customization of part headers
 
 - 
part
public MultipartBodyBuilder.PartBuilder part(String name, Object part, @Nullable MediaType contentType) Variant ofpart(String, Object)that also accepts a MediaType.- Parameters:
 name- the name of the part to addpart- the part datacontentType- the media type to help with encoding the part- Returns:
 - builder that allows for further customization of part headers
 
 - 
asyncPart
public <T,P extends Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, Class<T> elementClass) Add a part fromPublishercontent.- Parameters:
 name- the name of the part to addpublisher- a Publisher of content for the partelementClass- the type of elements contained in the publisher- Returns:
 - builder that allows for further customization of part headers
 
 - 
asyncPart
public <T,P extends Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference) Variant ofasyncPart(String, Publisher, Class)with aParameterizedTypeReferencefor the element type information.- Parameters:
 name- the name of the part to addpublisher- the part contentstypeReference- the type of elements contained in the publisher- Returns:
 - builder that allows for further customization of part headers
 
 - 
build
Return aMultiValueMapwith the configured parts. 
 -