Bilder übergeben

ErfinderLabyrinth

Bekanntes Mitglied
Hi,
ich möchte eine Website programmieren.
Hierbei möchte
Java:
writer.println("<img src=\"images\\Logo.png\" alt=\"LOGO\" height=\"50\"/>");

Java:
if (path.equals("images/Logo.png")) {
    System.out.println("Logo");
    ...
}

Bei ... möchte ich das Bild bei "src\\images\\Logo.png" übergeben
P.S. in der Variable pfad steht der Verzeichnispfad der URL
 
Beste Antwort
Ich habe die Lösung gefunden:
Java:
if (path.equals("images/Logo.png")) {
    System.out.println("Logo");
    writer.print("HTTP/1.0 " + "handy" + " " + "images" + "\r\n");
    writer.print("Content-type: file/html\r\n\r\n");
    writer.flush();
    File file = new File("src\\images\\Logo.png");
    FileInputStream fis = new FileInputStream(file);
    BufferedInputStream bis = new BufferedInputStream(fis);
    int read;
    byte[] buffer2 = new byte[1024];
    while ((read = bis.read(buffer2, 0, 1024)) >= 0) {
        bwriter.write(buffer2, 0, read);
    }
    bwriter.flush();
    fis.close();
    bis.close();
}

Erklärung:
Zeile 1: Ich überprüfe, ob der jeweilige Pfad aufgerufen wurde
(Zeile 2 kann man ignorieren)
Zeile 3 - 5: Ich sage...
Ich möchte wenn die bedingung "path.equals("images/Logo.png")" true ist, dass ein Bild übergeben wird, dass z.B. Chrome bei <img src="images/Logo.png" alt="LOGO" height="50"/> das Bild anzeigen kann
 
Das ist kein Programmier-Problem, sondern eine seeeehr grob und fachlich formulierte Anforderung.
Das ist in etwa so, als hättest du gesagst: "Ich will ein Spiel entwickeln und will, dass immer, wenn der Benutzer die linke Maustaste drückt, dass er mit seiner aktuell gewählten Waffe schießt."
Ja, toll.
Es gibt eine Gazillion mögliche Wege, das umzusetzen.
Genauso wie bei dir.
Welchen Ansatz wählst du denn für den Server? Einfach nur Servlets? Oder ein Web-Framework?
 
Verstehe ich das richtig, du möchtset ein Bild downloaden? Wenn das so ist, dann erzeuge einen Ordner images und speichere dein Bild dort. Der Ordner images muss natürlich im Zugriff deines Webservers liegen. Wo das genau ist hängt von deinem Server ab. Ein gesondertes Programm benötigst du dazu nicht.
 
Verstehe ich das richtig, du möchtset ein Bild downloaden? Wenn das so ist, dann erzeuge einen Ordner images und speichere dein Bild dort. Der Ordner images muss natürlich im Zugriff deines Webservers liegen. Wo das genau ist hängt von deinem Server ab. Ein gesondertes Programm benötigst du dazu nicht.
nicht downloaden, sondern nur übergeben, das dieses Bild auf der Website angezeigt wird
 
Java:
<img src=.../>
Das Attribut src bezeichnet eine URL wo das Bild zu finden ist. Der Browser lädt es von da runter (Download) und zeigt es dann an. Die URL kann auch relativ zur URL der Webseite sein. Wenn die HTML-Seite einfach nur in deinem Dateisystem liegt, dann reicht die Angabe des Ordners und des Dateinamens.
Images are not technically inserted into a web page; images are linked to web pages. The <img> tag creates a holding space for the referenced image.
 
Ich habe die Lösung gefunden:
Java:
if (path.equals("images/Logo.png")) {
    System.out.println("Logo");
    writer.print("HTTP/1.0 " + "handy" + " " + "images" + "\r\n");
    writer.print("Content-type: file/html\r\n\r\n");
    writer.flush();
    File file = new File("src\\images\\Logo.png");
    FileInputStream fis = new FileInputStream(file);
    BufferedInputStream bis = new BufferedInputStream(fis);
    int read;
    byte[] buffer2 = new byte[1024];
    while ((read = bis.read(buffer2, 0, 1024)) >= 0) {
        bwriter.write(buffer2, 0, read);
    }
    bwriter.flush();
    fis.close();
    bis.close();
}

Erklärung:
Zeile 1: Ich überprüfe, ob der jeweilige Pfad aufgerufen wurde
(Zeile 2 kann man ignorieren)
Zeile 3 - 5: Ich sage dem Browser, dass dies eine Datei zum herunterladen ist
Zeile 6 - 8: Ich öffne die Datei, die der Browser herunterladen soll
Zeile 9 - 13: Ich sende die Datei zum Browser
Zeile 14 - 16: Ich aktualisiere und schließe die Streams (Alle Streams schließen, die ihr nicht mehr braucht!)
 
Beste Antwort
Folgende Kritik:
Im Fehlerfall wird kein Stream geschlossen. Dafür gibt es try-with-ressources.
"Content-type: file/html\r\n\r\n" - sowas gibt es gar nicht.
"HTTP/1.0 " + "handy" + " " + "images" + "\r\n" - das ist sehr ungewöhnlich!
Warum programmierst du den Download selbst? Entwickelst du einen eigenen Webserver?
 
wenn du selber eine Lib schreibst musst du sehr aufpassen auf Fehler und Fehlerbehandlung... falls ich wieder über laravel pulvern kann da gibts die Fehlermeldung "laravel doesnt know what happen, probably its the php.ini file" ... ja wow wat soll ich damit

also sehr darauf achten dass so wenig fehlerchen und unerwartetes verhalten ( in diesem fall ist es unerwartet dass bei einem fehler der stream weiter läuft ) passiert wei nur irgendst möglich
 

Neue Themen


Zurück
Oben