org.springframework.http.codec.multipart

## Class MultipartHttpMessageWriter

- java.lang.Object
- - org.springframework.http.codec.LoggingCodecSupport
  - - org.springframework.http.codec.multipart.MultipartWriterSupport
    - - org.springframework.http.codec.multipart.MultipartHttpMessageWriter

- All Implemented Interfaces:
    HttpMessageWriter<MultiValueMap<String,?>>

      public class MultipartHttpMessageWriter
      extends MultipartWriterSupport
      implements HttpMessageWriter<MultiValueMap<String,?>>

  `HttpMessageWriter` for writing a `MultiValueMap<String, ?>` as multipart form data, i.e. `"multipart/form-data"`, to the body of a request.

  The serialization of individual parts is delegated to other writers. By default only `String` and `Resource` parts are supported but you can configure others through a constructor argument.

  This writer can be configured with a `FormHttpMessageWriter` to delegate to. It is the preferred way of supporting both form data and multipart data (as opposed to registering each writer separately) so that when the `MediaType` is not specified and generics are not present on the target element type, we can inspect the values in the actual map and decide whether to write plain form data (String values only) or otherwise.

  Since:
    5.0
  Author:
    Sebastien Deleuze, Rossen Stoyanchev
  See Also:
    `FormHttpMessageWriter`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.http.codec.multipart.MultipartWriterSupport

      `DEFAULT_CHARSET`

    - ### Fields inherited from class org.springframework.http.codec.LoggingCodecSupport

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultipartHttpMessageWriter()` Constructor with a default list of part writers (String and Resource).
    `MultipartHttpMessageWriter(List<HttpMessageWriter<?>> partWriters)` Constructor with explicit list of writers for serializing parts.
    `MultipartHttpMessageWriter(List<HttpMessageWriter<?>> partWriters, HttpMessageWriter<MultiValueMap<String,String>> formWriter)` Constructor with explicit list of writers for serializing parts and a writer for plain form data to fall back when no media type is specified and the actual map consists of String values only.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `HttpMessageWriter<MultiValueMap<String,String>>` | `getFormWriter()` Return the configured form writer.
    `List<HttpMessageWriter<?>>` | `getPartWriters()` Return the configured part writers.
    `reactor.core.publisher.Mono<Void>` | `write(Publisher<? extends MultiValueMap<String,?>> inputStream, ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage outputMessage, Map<String,Object> hints)` Write a given stream of object to the output message.

    - ### Methods inherited from class org.springframework.http.codec.multipart.MultipartWriterSupport

      `canWrite, generateBoundaryLine, generateLastLine, generateMultipartBoundary, generateNewLine, generatePartHeaders, getCharset, getMultipartMediaType, getWritableMediaTypes, setCharset`

    - ### Methods inherited from class org.springframework.http.codec.LoggingCodecSupport

      `isEnableLoggingRequestDetails, setEnableLoggingRequestDetails`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.http.codec.HttpMessageWriter

      `canWrite, getWritableMediaTypes, getWritableMediaTypes, write`

- - ### Constructor Detail

    - #### MultipartHttpMessageWriter

          public MultipartHttpMessageWriter()

      Constructor with a default list of part writers (String and Resource).

    - #### MultipartHttpMessageWriter

          public MultipartHttpMessageWriter(List<HttpMessageWriter<?>> partWriters)

      Constructor with explicit list of writers for serializing parts.

    - #### MultipartHttpMessageWriter

          public MultipartHttpMessageWriter(List<HttpMessageWriter<?>> partWriters,
                                            @Nullable
                                            HttpMessageWriter<MultiValueMap<String,String>> formWriter)

      Constructor with explicit list of writers for serializing parts and a writer for plain form data to fall back when no media type is specified and the actual map consists of String values only.
      Parameters:
        `partWriters` - the writers for serializing parts
        `formWriter` - the fallback writer for form data, `null` by default

  - ### Method Detail

    - #### getPartWriters

          public List<HttpMessageWriter<?>> getPartWriters()

      Return the configured part writers.
      Since:
        5.0.7

    - #### getFormWriter

          @Nullable
          public HttpMessageWriter<MultiValueMap<String,String>> getFormWriter()

      Return the configured form writer.
      Since:
        5.1.13

    - #### write

          public reactor.core.publisher.Mono<Void> write(Publisher<? extends MultiValueMap<String,?>> inputStream,
                                                         ResolvableType elementType,
                                                         @Nullable
                                                         MediaType mediaType,
                                                         ReactiveHttpOutputMessage outputMessage,
                                                         Map<String,Object> hints)

      Description copied from interface: `HttpMessageWriter`
      Write a given stream of object to the output message.
      Specified by:
        `write` in interface `HttpMessageWriter<MultiValueMap<String,?>>`
      Parameters:
        `inputStream` - the objects to write
        `elementType` - the type of objects in the stream which must have been previously checked via `HttpMessageWriter.canWrite(ResolvableType, MediaType)`
        `mediaType` - the content type for the write (possibly `null` to indicate that the default content type of the writer must be used)
        `outputMessage` - the message to write to
        `hints` - additional information about how to encode and write
      Returns:
        indicates completion or error