【问题标题】:Trouble converting simple PNG download script from PHP to Java将简单的 PNG 下载脚本从 PHP 转换为 Java 时遇到问题
【发布时间】:2010-12-17 23:56:38
【问题描述】:

我正在尝试使用 Java servlet 从 Flash 应用程序下载 PNG 图像。我正在使用这个 PHP 脚本,它运行良好,但需要切换到 Java servlet。

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 响应标头中看到的一个区别是 Servlet 使用“image/png; charset=UTF-8”,而 PHP 脚本只使用“image/png”。

感谢您的帮助!

修复 - 感谢 Ignacio Vazquez-Abrams!

resp.setContentType("image/png");
resp.addHeader("Content-Disposition", "attachment;filename=out.png");
resp.getOutputStream().write(image);
resp.getOutputStream().close();

【问题讨论】:

    标签: java php servlets base64


    【解决方案1】:

    使用.getOutputStream(),而不是.getWriter()。您需要将其作为二进制数据发送。

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2011-12-21
      • 2022-09-25
      • 2012-08-31
      • 2015-05-05
      • 2015-03-31
      • 2016-07-11
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多