[JSP] in DB gespeichertes Bild ausgeben

tomtom

ist Papa²
21 April 2006
16.116
657
Huhu,

ich hab wieder ein kleines Problem. :-?

Ich habe ein Bild in einer Datenbank gespeichert. Nach der DB-Abfrage habe ich das Bild in einen ServletOutputStream geschrieben.

Jetzt zu meinem Problem: Wenn ich mir das Bild ausgeben lasse, dann bekomme ich nur das Bild und keinen weiteren html-Code.
Wenn ich mir den erzeugten Quellcode anschaue, dann sehe ich nur noch cryptische Zeichen (und zwar die vom Bild -> als hätte man das Bild mit dem Editor geöffnet).

Der Aufruf zur Ausgabe vom Bild sieht so aus:
PHP:
<%@include file="ausgabe.jsp"%>
In der Ausgabe.jsp wird dann das Bild von der DB geholt.

Folgende Versuche haben nicht zum gewünschten Erfolg geführt:
PHP:
<img src="ausgabe.jsp" />
<img src='<jsp:include page="ausgabe.jsp" />'>

Jetzt stellen sich mir 2 Fragen:
- Wie kann ich neben dem Bild noch weiteren HTML-Code ausgeben
- Wie geb ich Parameter mit (z.B. die imageId)

Ich hoffe ihr könnt mir helfen.

Viele Grüße
Tom
 
Dein ganzes Problem ist zwar überhaupt nicht mein Gebiet, aber dieses Phänomen kann ich dir erklären:
Wenn ich mir den erzeugten Quellcode anschaue, dann sehe ich nur noch cryptische Zeichen (und zwar die vom Bild -> als hätte man das Bild mit dem Editor geöffnet).
Wenn du ein Bild ausgibst, musst du zusätzlich (kp, wie man das in JSP konkret macht) noch einen HTTP-Header senden, damit der Empfänger der Daten weiß, dass er da gleich ein Bild und keinen Text vorgesetzt kriegt.
Code:
content-type: image/jpeg
content-type: image/gif
content-type: image/png
Eine von dreien, je nachdem, welches Format dein Bild hat, musst du schicken.
 
Wenn es doch nur so einfach wäre. ;)

PHP:
response.setContentType("image/gif");

ist drin. Das Bild sehe ich ja auch so, wie es vorm dem Speichern ausgesehen hat.

Vielleicht habe ich mich vorhin unglücklich ausgedrückt:
Browser: ich sehe das Bild
Quelltext: Bytecode des Bildes (ohne jegliches HTML)
 
Vielleicht habe ich mich vorhin unglücklich ausgedrückt:
Browser: ich sehe das Bild
Quelltext: Bytecode des Bildes (ohne jegliches HTML)
Hmmm, vielleicht hast du ja auch nur einen Denkfehler drin :think:
So ist es doch auch korrekt :)

Erklär mal bitte nochmal, was jetzt das Problem is, bzw. was du denkst, sollte anders sein.
 
Mein Problem ist, dass ich nur das Bild ausgeben kann.

Wenn ich jetzt aber zu dem Bild noch einen Text ausgeben möchte, ist das schier unmöglich.
 
Mein Problem ist, dass ich nur das Bild ausgeben kann.

Wenn ich jetzt aber zu dem Bild noch einen Text ausgeben möchte, ist das schier unmöglich.
Ok, dann lag ich richtig.

Pass auf:
https://www.thehacker.ws/img/thehacker10.gif <- dieses Script erzeugt dieses Bild
thehacker10.gif

content-type: image/gif

Möchte ich jetzt aber noch Text drumrumfügen, muss ich HTML benutzen, also z.B. so:
HTML:
<img src="img/thehacker10.gif" alt="das Bild" />
<span id="dertext">Text</span>
Das Script, welches obigen HTML-Code ausgibt, hat
content-type: text/html

Du brauchst also 2 Scripte: eines für das Bild (das hast du ja schon) und eines für das Dokument, welches den Text hat und das Bild einfügt
 
Du meinst also so was in der Art:

HTML:
<html-code>
<table>
  <tr>
    <td><img src='<%@include page="ausgabe.jsp"%>' alt="bild"></td>
    <td>Text zum Bild</td>
  </tr>
</table>

Und genau das geht nicht. Dann sagt mir Eclipse, dass das erst ab source level 5.0 verfügbar ist.

Das Problem: Bei uns in der Arbeit ist erst die 1.4.x-Version freigegeben. :-?

Und so wie in php funktioniert das leider nicht:
PHP:
<img src="printImg.php?imageId=n" />
 
Ich mag zwar Eclipse ned, aber wo es Recht hat, hat es Recht.
Der obige Code würde ja die Datenbytes des Bilds direkt in den HTML-Quellcode schreiben, was ja Quark is ;)

Einfach so:
HTML:
<table>
  <tr>
    <td><img src="ausgabe.jsp" alt="bild"></td>
    <td>Text zum Bild</td>
  </tr>
</table>
 
Und wenn du einfach nur ausgabe.jsp in die Browser-Adresszeile eintippst ?
Kann ich mir das Ergebnis online angucken ?
 
Online angucken geht nicht, da dies nur eine Intranet-Anwendung wird.

Hab aber jetzt den Fehler gefunden. :biggrin:

Um mir die DB-Zugriff zu sparen sparen, hab ich das Bild im 1. Schritt hochgeladen, daraus die Streams gemacht und dann sie ausgabe.jsp gerufen.

Der Code in der ausgabe.jsp wurde schon abgearbeitet. Nur kannte die - logischer weise - den Request mit den Bilddaten nicht.
Ich nehme jetzt einfach mal an, dass sich das Problem löst, wenn ich die DB-Connection einfüge.
Das wird wohl noch ein bisschen dauern, da dies nicht in meiner Zuständikeit liegt. :roll:

Danke für deine Hilfe!