Me temo ésta consulta casi va más en la categoría php que en la de Java. En cualquier caso voy a hacer un intento. Basándome en el RFC2045 (
http://www.ietf.org/rfc/rfc2045.txt), si lo que envías es una imagen, su "Content-Type:" será del tipo "image/xyz" (donde xyz será gif, jpg, etc...). Al transferirse codificada en base64, tendrás que añadir un campo nuevo: "Content-Transfer-Encoding" que sea del tipo "base64".
Citando a la wikipedia en su artículo sobre base64:
Using a URL-encoder on standard Base64, however, is inconvenient as it will translate the '+' and '/' characters into special percent-encoded hexadecimal sequences ('+' = '%2B' and '/' = '%2F'). When this is later used with database storage or across heterogeneous systems, they will themselves choke on the '%' character generated by URL-encoders (because the '%' character is also used in ANSI SQL as a wildcard).
For this reason, a modified Base64 for URL variant exists, where no padding '=' will be used, and the '+' and '/' characters of standard Base64 are respectively replaced by '-' and '_', so that using URL encoders/decoders is no longer necessary and has no impact on the length of the encoded value, leaving the same encoded form intact for use in relational databases, web forms, and object identifiers in general.De ahí tomo la idea de que para algunos propósitos, el carácter "+" no es muy adecuado, por lo que supongo que php lo cambiará. Me temo que no tengo idea de qué función has de usar en php para reconocer el signo + de manera correcta en base64. Dr. Google dice que hay funciones especiales de php para reconocer base64 codificado en una url (sin utilizar los +), así que siempre podrías utilizarlas en lugar de la que usas ahora.
Te deseo suerte, y siento no ser de mucha ayuda.
Saludos
Daniel
PD: Por favor, si solucionas el problema comenta aquí cómo lo has hecho.