자바에서 간단한 웹 서버를 구현하고 싶습니다. 문제는 이미지가 웹 브라우저에서 올바르게 렌더링되지 않는다는 것입니다. 내가 볼 수있는 건, localhost : 8888/image.png에 가면, 정확한 너비, 높이, 무게의 흰색 사각형입니다. 미리 감사드립니다. :) 여기 브라우저에서 http를 통해 이미지를 보내고 있습니다.
코드입니다 : 이public Http(Socket server) throws IOException {
in = new BufferedReader(new InputStreamReader(server.getInputStream()));
parseHeader(in);
String response = new String();
out = new PrintWriter(server.getOutputStream(), true);
Files f = new Files(getHomePath() + httpRequestedPage);
if(!f.exists) {
// 404 ERROR
} else {
response += "HTTP/1.1 200 OK\r\n";
response += "Date: " + nowDate + "\r\n";
response += "Content-Type: image/png\r\n";
response += "Content-Length: " + res.length() + "\r\n";
response += "Connection: keep-alive\r\n";
response += "\r\n";
response += IOUtils.toString(new FileInputStream(getHomePath() + httpRequestedPage));
}
out.println(response);
in.close();
out.close();
}
편집이 :
불행하게도이 같은 메시지를 반환합니다.
out = new PrintWriter(server.getOutputStream(), true);
OutputStream out2 = server.getOutputStream();
File file = new File(HttpServer.getHomePath() + httpRequestedPage);
InputStream stream = new FileInputStream(file);
String response = new String();
response += "HTTP/1.1 200 OK\r\n";
response += "Date: " + nowDate + "\r\n";
response += "Content-Type: image/png\r\n";
response += "Content-Length: " + file.length() + "\r\n";
response += "Connection: keep-alive\r\n";
response += "\r\n";
out.println(response);
IOUtils.copy(stream, out2);
out.close();
out2.close();
나는 이런 식으로 시도했지만 불행히도 브라우저에 "오류가 있기 때문에 ..... 이미지를 표시 할 수 없습니다."라고 반환됩니다. \t \t'OutputStream out2 = server.getOutputStream(); \t \t \t \t BufferedImage originalImage = ImageIO.read (새 파일 (HttpServer.getHomePath() + httpRequestedPage))); \t \t ByteArrayOutputStream baos = new ByteArrayOutputStream(); \t \t ImageIO.write (originalImage, "png", baos); \t \t baos.flush(); \t \t [] imageInByte = baos.toByteArray(); out2.write (imageInByte); ' –
OutputStream out2 = server.getOutputStream(); server.setContentType ("image/png"); InputStream stream = 새 FileInputStream (새 파일 (HttpServer.getHomePath() + httpRequestedPage)); IOUtils.copy (stream, out2); – pravat
불행히도 그것은 나에게 같은 오류를 반환합니다. 질문을 편집하여 코드의 새 버전을 게시 할 수 있습니다. 감사합니다 –