Entwickler-Ecke

ASP.NET und Web - Wie Image aus DB auf Website darstellen


rzwanziger - Do 30.10.08 12:08
Titel: Wie Image aus DB auf Website darstellen
Hallo,

ich will auf einer Website dynamisch einige Images darstellen (so ähnlich wie in einem Webshop).
Das Problem ist nun: die Bitmap für das Image habe ich nicht als Datei vorliegen, sondern in einer Datenbanktabelle als LOB.
In einer Forms-Anwendung geht das prima - LOB-Inhalt laden und einer entsprechenden PictureBox zuweisen. Aber im Web brauche ich doch einen Pfad zur Image-Datei:


Quelltext
1:
<img source="http://meinserver/meinverzeichnis/bild.jpg" />                    


Wie bekomme ich nun die Bitmap aus der Datenbank auf einen per HTTP referenzierbaren Pfad?
Oder gibt es noch eine andere Möglichkeit, die ich nicht bedacht habe?

Danke für Tipps,
Ralf


Kha - Do 30.10.08 12:34

Nimm als Bildquelle keine statische Datei, sondern ein Skript: src="Photos.aspx?id=42". Darin kannst du dann den Blob per Response.BinaryWrite zurückgeben, aber nicht den ContentType vergessen ;) .


rzwanziger - Fr 31.10.08 11:20

Jupp, genauso geht's. Vielen Dank für den Hirntritt :wink:

Hier mal für alle (oder auch für mich, wenn ich das in einem halben Jahr wieder vergessen habe :D ) die vier entscheidenden Codezeilen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
protected void Page_Load(object sender, EventArgs e)
{
  byte[] puffer;
  // ...
  // den Puffer entsprechend initialisieren und mit
  // den Daten des zu zeigenden Bildes füllen
  // ...

  //ContentType setzen, damit der Browser das auch als jpeg erkennt
  Response.ContentType = "image/jpeg"
  //den Outputstream erstmal leeren, damit kein HTML-Header mit kommt
  Response.Clear();
  //Bufferoutput aktivieren - so wird die Response erst gesendet,
  //nachdem alle Bytes vorhanden sind
  Response.BufferOutput = true;
  //und Los gehts:
  Response.BinaryWrite(puffer);
}