2016-09-08 9 views
0

NanoHTTPD server을 사용하여 브라우저에 이미지를 표시하려고하지만 항상 표시 할 항목이 없습니다. 이 제 역할을 방법의 일부입니다NanoHTTPD : 이미지 표시

else if(uri.contains(".png")){ 
     SmallBinaryFiles smallBinaryFiles = new SmallBinaryFiles(); 
    InputStream is = new InputStream() { 
      @Override 
      public int read() throws IOException { 
       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
      } 
     }; 
    long i=0; 
    try { 
//smallBinaryFiles.readSmallBinaryFiles(uri): converts binary file given by uri to byte[] 
      is = new ByteArrayInputStream(smallBinaryFiles.readSmallBinaryFile(uri)); 

    while ((is.read()) != -1){ 
     i++; 
    } 
     } catch (IOException ex) { 
      Logger.getLogger(HelloServer.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    return new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, MIME_PNG, is,i); 

    } 
//declaration of MIME_PNG in NanoHTTPD Core 
public static final String MIME_PNG = "image/png"; 

답변

1

귀하의 while() 루프는 입력 스트림의 모든 아무것도 그래서 보낼 왼쪽 먹는다. i 대신 -1을 입력하여 청크 응답으로 만드십시오.

게다가, 귀하의 read() 메서드는 호출 될 때 예외를 throw하는 것으로 보입니다. 대신 FileInputStream을 사용하십시오.