Support "multipart/mixed" and "multipart/related"
Besides multipart/form-data, there are two other multipart media types in use:
-
multipart/mixed, as defined in RFC 1341, and used in OData Batch Processing -
multipart/related, as defined in RFC 2387, and used in Google Cloud Multipart Upload.
These have different properties than multipart/form-data, for instance in that they do not require a Content-Dispostion header for each part.
Furthermore, it seems that OData relies on nested multipart/mixed structures, where the outer batch part can contain a changeset that is in itself a multipart consisting of changes.
Not having done a full investigation, it appears that there are a number of issues with our current WebFlux multipart support that prevents us from fully supporting multipart/mixed and multipart/related:
- The
DefaultPartHttpMessageReaderis not capable of reading nested multipart messages. - The
MultipartHttpMessageWriterandPartEventHttpMessageWriterare not capable of writing nested multipart messages, except in a raw form. - The
PartandPartEventinterfaces expose anameproperty that reflects theContent-Dispositionname, but which only makes sense inmultipart/form-data. - The
MultipartHttpMessageWriterandPartEventHttpMessageWriterwrite aContent-Dispositionheader, which it only needed inmultipart/form-data.
This issue was created to gather all research done on multipart/mixed and multipart/related done so far, and to see how much interest there is in the community for Spring Framework to fully support these multipart types.
In case when WebFlux is used as client to connect 3rd party applications that might be useful to have such feature.
For example if application need to connect 3rd party API using xAPI documentation where in some cases it should use strictly multipart/mixed media type - xAPI documentation reference about multipart/mixed
Any idea when this will be implemented? Otherwise ideas on how to overcome it until multipart/related gets implemented in Spring?