Autor Beitrag
rzwanziger
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: Do 30.10.08 12:08 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: 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:

ausblenden 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);
}