# Bilder übergeben



## ErfinderLabyrinth (23. Jan 2022)

Hi,
ich möchte eine Website programmieren.
Hierbei möchte

```
writer.println("<img src=\"images\\Logo.png\" alt=\"LOGO\" height=\"50\"/>");
```


```
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


----------



## Oneixee5 (23. Jan 2022)

```
String path = "images/Logo.png";
        String line = String.format("<img src=\"%s\" alt=\"LOGO\" height=\"50\"/>", path);
        System.out.println(line);
```


----------



## ErfinderLabyrinth (23. Jan 2022)

Oneixee5 hat gesagt.:


> ```
> String path = "images/Logo.png";
> String line = String.format("<img src=\"%s\" alt=\"LOGO\" height=\"50\"/>", path);
> System.out.println(line);
> ```


Was soll das Bringen


----------



## ErfinderLabyrinth (23. Jan 2022)

PPS:
writer = PrintWriter


----------



## httpdigest (23. Jan 2022)

ErfinderLabyrinth hat gesagt.:


> Was soll das Bringen


Welches Bringen meinst du?


----------



## ErfinderLabyrinth (24. Jan 2022)

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


----------



## httpdigest (24. Jan 2022)

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?


----------



## Oneixee5 (24. Jan 2022)

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.


----------



## httpdigest (24. Jan 2022)

Oneixee5 hat gesagt.:


> Ein gesondertes Programm benötigst du dazu nicht.


Naja, doch? Er braucht einen HTTP Server (Webserver). Ich habe verstanden, dass er genau das mit Java-Mitteln machen möchte.
Er kann natürlich auch einfach ein fertiges separates Programm (nginx, Apache HTTP Server, node http-server, python server, etc.) verwenden.
Aber ein separates Programm braucht er schon.


----------



## Oneixee5 (24. Jan 2022)

httpdigest hat gesagt.:


> Naja, doch? Er braucht einen HTTP Server (Webserver). Ich habe verstanden, dass er genau das mit Java-Mitteln machen möchte.
> Er kann natürlich auch einfach ein fertiges separates Programm (nginx, Apache HTTP Server, node http-server, python server, etc.) verwenden.
> Aber ein separates Programm braucht er schon.


Das habe ich doch geschrieben...


----------



## ErfinderLabyrinth (24. Jan 2022)

Oneixee5 hat gesagt.:


> 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


----------



## Oneixee5 (24. Jan 2022)

```
<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.








						HTML img tag
					

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.




					www.w3schools.com
				



_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._


----------



## ErfinderLabyrinth (25. Jan 2022)

ok, wie kann ich in java das Bild dem Browser so übergeben, dass sich der Browser dies herunterladen kann?


----------



## ErfinderLabyrinth (25. Jan 2022)

Ich habe die Lösung gefunden:

```
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!)


----------



## Oneixee5 (25. Jan 2022)

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?


----------



## ErfinderLabyrinth (25. Jan 2022)

Oneixee5 hat gesagt.:


> 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?


ja


----------



## Mart (25. Jan 2022)

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


----------

