Возврат каретки, декодирование Base64 из Java и отправка в браузер - PullRequest
5 голосов
/ 18 февраля 2012

У меня есть сервлет, который изменил размеры и закодировал изображение в base64. Я кодирую это так

BufferedImage newBuf = .. a bufferedImage...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, sImgFormat, baos);
baos.flush();
imageInBytes = baos.toByteArray();

Затем я кодирую это в base64 для отправки в браузер, как это

sun.misc.BASE64Encoder encoder = new BASE64Encoder();
String sEncImage = "data:image/jpg;base64," + encoder.encodeBuffer(imageInBytes);

Браузер получит кодировку, и она будет работать, за исключением возвратов каретки ("\ n"), последовательно встроенных в строку, которая портит изображение Когда я снимаю возврат каретки, изображение в порядке. Есть ли способ генерировать кодировку без возврата каретки. Или я должен отфильтровать его сам перед отправкой обратно?

(я использую J2SE 1.4.2 и мне нужно продолжать это делать)

1 Ответ

4 голосов
/ 18 февраля 2012

Я подозреваю, что sun.misc.Base64encoder разбивает выходные данные.Я бы не стал использовать классы sun.misc, поскольку он ограничивает ваш код Oracle JVM (например, он будет работать в IBM Websphere).Я бы использовал кодировщик Base64 или Base64OutputStream .

...