将简单的PNG下载脚本从PHP转换为Java时出现问题

将简单的PNG下载脚本从PHP转换为Java时出现问题,java,php,servlets,base64,Java,Php,Servlets,Base64,我正在尝试使用Javaservlet从Flash应用程序下载PNG图像。我正在使用这个PHP脚本,它工作得很好,但需要切换到Javaservlet PHP: 我尝试了两个单独的Base64解码器类,结果相同。解码后的base64作为响应写入,但PNG已损坏。我在HTTP响应头中看到的一个区别是Servlet使用“image/png;charset=UTF-8”,而PHP脚本只使用“image/png” 谢谢你的帮助 修正-谢谢伊格纳西奥·巴斯克斯·艾布拉姆斯 resp.setContentTyp

我正在尝试使用Javaservlet从Flash应用程序下载PNG图像。我正在使用这个PHP脚本,它工作得很好,但需要切换到Javaservlet

PHP:

我尝试了两个单独的Base64解码器类,结果相同。解码后的base64作为响应写入,但PNG已损坏。我在HTTP响应头中看到的一个区别是Servlet使用“image/png;charset=UTF-8”,而PHP脚本只使用“image/png”

谢谢你的帮助

修正-谢谢伊格纳西奥·巴斯克斯·艾布拉姆斯

resp.setContentType("image/png");
resp.addHeader("Content-Disposition", "attachment;filename=out.png");
resp.getOutputStream().write(image);
resp.getOutputStream().close();
使用
.getOutputStream()
,而不是
.getWriter()
。您需要将其作为二进制数据发送

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(); 
resp.setContentType("image/png");
resp.addHeader("Content-Disposition", "attachment;filename=out.png");
resp.getOutputStream().write(image);
resp.getOutputStream().close();