2013-10-30 192 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

好吧,我解决了它,显然变量不重置在新的页面加载,即使他们不是静态的。