2010-12-17 44 views
1

我試圖從使用Java servlet的Flash應用程序下載PNG圖像。我正在使用這個完美運行的PHP腳本,但需要切換到Java servlet。無法將簡單的PNG下載腳本從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響應頭文件中看到的一個區別是,當PHP腳本使用「image/png」時,Servlet使用「image/png; charset = UTF-8」。

感謝您的幫助!

FIX - 謝謝Ignacio Vazquez-Abrams!

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

回答

3

使用.getOutputStream()而不是.getWriter()。您需要將其作爲二進制數據發送。