hotti: Bild aus DB in HTML-Seite einbinden

Beitrag lesen

hi,

.src zeigt auf eine Ressource, hinter der sich ein serverseitiger Prozess verbirgt, der das >Image mit dem passenden Content-Type (image/gif, image/png,...) ausliefert

Und dies Ressource könnte eben auch ein Blobstream sein, richtig?

Nenne es einfach Binary. Abstrakt ein Stream mit endlicher Länge. Blob, Stream, Binary, nunja, da unterscheidet die Fachwelt, da kannst Du Dich aber auch selbst einlesen ;)

Eine zusätzliche Serverlast? Was ist denn der Unterschied, wenn .src einerseits auf einen Dateipfad und andrerseits auf einen Stream zeigt?

Der Unterschied ist der, dass eine Datei vom Webserver selbst ausgeliefert wird. Hierbei greifen auch 'normale' Cache-Mechanismen, auf die ChrisB bereits hingewiesen hat. Ein 'Stream' (besser: native Binary) jedoch, der muss serverseitig ersteinmal erzeugt werden, das erfordert also einen zusätzlichen Prozess (und das Caching braucht eine proprietäre Lösung).

Da war ich in meiner Schilderung etwas ungenau. Wenn ich in meiner IDE ein Bild zur Entwurfszeit einfüge, wird dieses als Hexstring in den Quellcode-Editor geschrieben  -  die eigentlichen Blobdaten bleiben unverändert.

Ok. Das .src-Attribut erlaubt nur sowas:
   src="/path/webressource"
   src="data:image/png;base64,%s" // in %s ein Base64-String
   src="blob:cf1c52fc-d0ae-43bb-a6c9-d886bdc3d902" // browserinterne Referenz auf eine Binary

Und: Zwischen den "", also der Wert zum Attribut .src ist IMMER ASCII!!!

Ergo: Es funktioniert nicht, eine Binary einfach zwischen zwei "" zu setzen, das Warum einfach erklärt: Eine Binary enthält Oktetten aller Wertigkeiten (0..255, 0x0..0xFF), was im DOM nicht aktzeptiert wird. Ebesowenig kannst Du eine Binary in einem Texteditor bearbeiten, der wird stets versuchen, die Oktetten als Textzeichen darzustellen, was spätestens beim Speichern die Binary zerstört.

Versteh ich das jetzt richtig: Wenn diese Ressource ein Hexstring wäre, müsste die Dateiendung als Hexstring angefügt werden?

Nein, löse Dich mal vom Gedanken einer Dateiendung. Mit

img src="/path/webressource"

verweist das src-Attribut auf eine Webressource, in der Response wird die Binary für ein Image erwartet und normalerweise kümmert sich der Webserver darum, ebendiese Bild-Binärdaten selbst auszuliefern, indem der Webserver das Image selbst aus dem Dateisystem liest und unzerknittert in die Response schiebt.

Horst