MultipartStream.discardBodyData() is identical to readBodyData() - copied and pasted, but with output removed.
discardBodyData() can be changed to call readBodyData() with a NullInputStream (from commons io package, which is already a dependency). This is much more readable and maintainable, and much less error prone.
(Alternatively, readBodyData() can be modified to handle a null output stream by performing a null check before writing into it, and skipping the writes if output is null. then discardBodyData() can call it with a null argument. However, the first solution seems more elegant.)