Open dmichulke opened 8 years ago
As a current workaround for guessing whether the data is still base64 encoded I use
(if (every? #(<= (int \+) % (int \z)) (seq bytes))
(.decode (Base64/getDecoder) bytes)
bytes)
In a related stack overflow post, there is a discussion as to whether this is a bug in the software (PHP in this case) or in the RFC:
When receiving a file via multipart-params, there is an (optional) key "Content-Transfer-Encoding" with values 7bit (default), 8bit, binary and base64.
Depending on these values, the file or byte array (depending on the store used) should automatically be decoded to its original form.
Using Java7 or higher, one can use
(.decode (java.util.Base64/getDecoder) bytes)
to receive a new byte array with the real payload.This is an issue because upon receiving the data, the multpart-params middleware has the "Content-Transfer-Encoding" parameters available to select the correct decoding mechanism. But since the Content-Transfer-Encoding value is not transmitted further down the line, the actual consumer of the file has to guess the real Content-Transfer-Encoding.