2013-10-30 206 views
0

此代碼似乎可以正常工作,但是當我使用它從數據庫渲染圖像時,圖像在頁面上不完整。只有約70%的圖像被渲染。用不同的圖像渲染不同數量的圖像。圖像顯示不正確

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    FileData fileData = new FileData(); 
    int id = Integer.parseInt(request.getParameter("id")); 
    UploadFile uploadFile = fileData.SelectFile(id); 
    inputStream = uploadFile.data; 
    fileName = uploadFile.name; 
    if(uploadFile.Type.equals("Image/Video")) 
    { 
     contentType = "image"; 
    } 
    render(request, response); 
} 
private void render(ServletRequest request, ServletResponse response) throws IOException { 
    try { 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; 
     int inputStreamLength = 0; 
     int length = 0; 
     while ((length = inputStream.read(buffer)) > -1) { 
      inputStreamLength += length; 
      baos.write(buffer, 0, length); 
     } 

     if (inputStreamLength > contentLength) { 
      contentLength = inputStreamLength; 
     } 
     if (response instanceof HttpServletResponse) { 
      HttpServletResponse httpResponse = (HttpServletResponse) response; 
      httpResponse.reset(); 
      httpResponse.setHeader("Content-Type", contentType); 
      httpResponse.setHeader("Content-Length", String.valueOf(contentLength)); 
      httpResponse.setHeader("Content-Disposition", "\"" + contentDisposition + 
            "\"" + (fileName != null && !fileName.isEmpty()) != 
            null ? "; filename=\"" + fileName + "\"": ""); 
     } 

     response.getOutputStream().write(baos.toByteArray(), 0, (int)contentLength); 

     //finally 
     response.getOutputStream().flush(); 

     //clear 
     baos = null; 
    } 
    finally { 
     close(response.getOutputStream()); 
     close(inputStream); 
    } 
} 
private void close(Closeable resource) throws IOException { 
    if (resource != null) { 
     resource.close(); 
    } 
} 

下面是在Firefox中的頁面上顯示圖像的示例。 rendered image

我已經確認圖像在上傳到網站時沒有損壞,並且圖像在數據庫中沒有問題。問題是在網站上呈現圖像的代碼。

我在做什麼錯?

回答

0

好吧,我解決了它,顯然變量不重置在新的頁面加載,即使他們不是靜態的。