2013-08-12 40 views
0
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    logger.info("Inside Upload Image Preview---"); 

    String imageName = request.getParameter("imgName"); 
    String contentType = "image/"; 

    BufferedInputStream input = null; 
    BufferedOutputStream output = null; 

    logger.info("Inside Upload Image Preview---Before try block."); 

    try { 
     String imageExt = imageName.substring(imageName.lastIndexOf(".")+1); 
     logger.info("conent Type for the response is "+contentType); 
     logger.info("Image name is "+imageName); 

     contentType = contentType + imageExt; 
     response.setContentType(contentType); 

     String dirPath= System.getProperty(AMPortletConstants.JBOSS_HOME_DIR)+"/image/"; 
     File fileName = new File(dirPath+imageName); 

     FileInputStream fileInputStream = new FileInputStream(fileName); 
     input = new BufferedInputStream(fileInputStream); 
     output = new BufferedOutputStream(response.getOutputStream()); 

     byte[] buffer = new byte[8192]; 
     for (int length = 0; (length = input.read(buffer)) > 0;) { 
      output.write(buffer, 0, length); 
     } 

     logger.info("Image added in response."); 
    } catch (Exception exception) { 
     logger.error("Exception in UploadImagePreview======="+exception); 
     exception.printStackTrace(); 
    } 
} 

web.xml中完成完整圖像不通過servlet顯示。它不是在底部

<servlet> 
    <servlet-name>imagePreview</servlet-name> 
<servlet-lass>com.xxxxxx.portlet.UploadImagePreview</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>imagePreview</servlet-name> 
    <url-pattern>/xxxxxxImages/*</url-pattern> 
</servlet-mapping> 

URL模式我們打

/xxxxxxxx-portlet/xxxxxxImages/img?imgName=Test.png

它在瀏覽器中顯示圖像,但問題是圖像不完整。輕微底部部分丟失。請提供解決方案。

回答

0

你錯過

finally 
{ 
    output.flush(); 
    output.close(); 
} 

其實close()電話flush()但對於你的問題的重要組成部分,是流的缺失齊平。一定要記住close()你的資源,或者你在與資源泄漏:-)

乾杯傷害的世界,

+0

您好我有同樣的問題,副底面部分缺失,我關閉的OutputStream,仍然底部部分丟失。任何想法 ? getOutputStream()。flush();'和getResponse()。getOutputStream()。close();'...我的byte [] buf = new byte [1024];'它是相關的? – Secondo

+0

@Secondo很難說沒有看到你的代碼整體 - 如何使用'buf'? –

+0

沒問題,我會寫一個問題。謝謝 – Secondo