Проблемы с преобразованием простого скрипта загрузки PNG из PHP в Java - PullRequest
1 голос
/ 17 декабря 2010

Я пытаюсь загрузить изображение 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();

1 Ответ

3 голосов
/ 17 декабря 2010

Используйте .getOutputStream(), а не .getWriter().Вам необходимо отправить его в виде двоичных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...