0

Javaで簡単なWebサーバーを実装したいと思います。問題は、Web ブラウザで画像が正しく表示されないことです。localhost:8888/image.png にアクセスすると、正確な幅、高さ、および重さの白い正方形だけが表示されます。前もって感謝します!:)

コードは次のとおりです。

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(); 
4

2 に答える 2

2

画像のレンダリングに Write クラスを使用しています。OutputStream を使用して画像を書き込みます。画像はバイトであり、レンダリングには常にバイトベースのストリームを使用する必要があります。

于 2013-03-27T17:25:29.553 に答える
0

バイトを変換する場合は、エンコーディングStringを使用する必要があります。Base64クライアント側では、srcこのようなイメージを指定できます"data:image/png;base64," + imageData

于 2013-03-27T17:48:35.667 に答える