Я пытаюсь загрузить изображение PNG из приложения Flash, используя сервлет Java. Я использовал этот скрипт PHP, который отлично работал, но вместо этого мне нужно переключиться на сервлет Java.
PHP:
<?php
header('Content-Type: image/png');
header("Content-Disposition: attachment; filename=out.png");
echo base64_decode($_POST["image"]);
?>
И мой код Java:
String image = getRequest().getParameter("image");
String decodedImage = new String(Base64.decode(image));
HttpServletResponse resp = op.getResponse();
resp.setContentType("image/png");
resp.addHeader("Content-Disposition", "attachment;filename=out.png");
resp.getWriter().write(image);
resp.getWriter().flush();
Я пробовал два отдельных класса декодера Base64 с одинаковыми результатами. Декодированный base64 записывается как ответ, но PNG поврежден. Одно отличие, которое я вижу в заголовке ответа HTTP, состоит в том, что сервлет использует «image / png; charset = UTF-8», а скрипт PHP просто использует «image / png».
Спасибо за помощь!
FIX - спасибо Игнасио Васкес-Абрамс!
resp.setContentType("image/png");
resp.addHeader("Content-Disposition", "attachment;filename=out.png");
resp.getOutputStream().write(image);
resp.getOutputStream().close();