HTTP Bild an Client schicken mit com.sun.net.httpserver

  • Themenstarter Themenstarter juergen789
  • Beginndatum Beginndatum
J

juergen789

Gast
Hallo allerseits,
ich bastel gerade (aufgrund uni-projekt) an einem kleinen http server.
hierfür benutze ich die com.sun.net.httpserver API von sun.

serverstarten, text und html-code generieren und ausgeben, get requeste verarbeiten
klappt bislang alles ohne probleme. wenn ich nun den "content/type" zu
"image/jpeg" ändere, wie kann ich dann ein bild an den client schicken lassen?
folgendes habe ich bislang versucht:

[java=13]
class DateHandler implements HttpHandler
{
public void handle( HttpExchange httpExchange ) throws IOException
{
InputStream is = httpExchange.getRequestBody();
File pic = new File( "wiki.jpeg" );
httpExchange.getResponseHeaders().add("Content-type", "image/jpeg");
httpExchange.sendResponseHeaders(200, pic.length());
OutputStream os = httpExchange.getResponseBody();
os.write(pic);
os.close();
}
}
[/code]

in Zeile 10 wird gemeckert:
- The method write(int) in the type OutputStream is not applicable for the arguments (File)

write akzeptiert wohl nur Integer, wie kann ich mein Bild diesbezüglich umbasteln/umcasten?

vielen dank im voraus!
mfg jürgen
 
Naja OutputStream könnte auch bytes schreiben...^^

Am leichtesten geht es evtl. aber irgendwie so: (anstelle von os.write..())
Java:
		ImageIO.write(ImageIO.read(pic), "jpeg", os);

:bae:
 
danke für deine hilfe, jedoch funktioniert das leider nicht wirklich.
zwar kann ich es compilen und der browser zeigt im reiter (-Grafik) an,
aber das jpeg-bild ist nicht zu sehen :/
 
Zeige mal deinen aktuellen Code..hast du auch den Handler mit createContext bekannt gemacht am Server?
Und was liefert denn
Java:
		System.out.println(pic.exists());
		System.out.println(pic.getAbsolutePath());

vllt ist der Pfad zum Bild einfach verkehrt? (wie rufst du den Server auf? Konsole, IDE ?)
 
ja, pic.exists() ergab false und mit getAbsolutePath() hab ich den pfad nun berichtigt!

bild wird im browser angezeigt, klappt wunderbar!
vielen vielen dank!
 
Hallo zusammen,

die Frage ist zwar schon eine Weile her, jedoch habe ich ein ähnliches Problem.

Ich arbeite ebenfalls mit dem com.sun.net.http.HttpServer und wollte in den OutputStream der Response HTML-Code schreiben, welcher u.a. ein <img>-Tag enthält mit einem relativen Pfad zu einem Bild. Leider lädt er das Bild im Browser nicht. Bei Untersuchungen mit FireBug in Firefox zeigt er einen Response-Code 404 beim Laden des Bildes an. An meinen registrierten Context wird jedoch kein Request gesendet, um das Bild vom Server zu laden. Weiß jemand vielleicht, wie man das implementieren kann?

Aktuell habe ich einfach versucht im Root-Verzeichnis des Java-Projekts einen Ordner "img" anzulegen, welcher das Bild enthält. Den Pfad zum Bild gebe ich dann im <img>-Tag so an: "img/image.jpg".

Vielen Dank schon einmal im voraus.
Andi
 

Neue Themen


Zurück
Oben