PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bild in Datenbank speichern mittels ASP?


chakotey
20.05.2003, 10:54
Wie kann ich ein Bild (jpg, tiff, bmp oder auch ein pdf File in eine SQL Datenbank speichern?


Cord Worthmann
20.05.2003, 11:35
moin,
eigendlich ist es unüblich, binäre dateien in datenbanken abzuspeichern - es kommt dabei auch oft zu problemen...
...ich wrde dir raten, die dateien in einem verzeichnis oder in einer archiv-datei zu speichern und lediglich die dateipfade in der datenbank zu verwalten.


grtz
chief

chakotey
20.05.2003, 11:51
mhm danke für die info .. mein chef möchte es aber so haben .. weiß wer de lösung?

Kristin
20.05.2003, 12:09
Weis dein Chef denn was er da will? Ich würde es lieber versuchen im verständlich zu machen warum das mit dem abspeichern des Pfades besser wäre - ein unnötiges aufblähen der Datenbank wäre auch ein Argument . . .

Viele Grüße

Kristin

chakotey
20.05.2003, 15:01
Mittlerweile hab ichs geschaft ihm das "auszureden" ..

danke für de infos!

PS: Aba falls wer weiß wies funtioniert .. interessiern würde es mich trotzdem noch immer!

dosenberg
29.10.2003, 15:51
Hallo,

ich hatte ein ähnliches Problem.
Es sollten Bilder in der Datenbank gespeichert und wieder ausgelesen werdne können. Habe verzweifelt versucht dies dem Kunden auszureden. Aber wollte es unbedingt so und da der Kunde König ist ...

Bei den verwendeten Bildern handelte es sich um gif Dateien.

Mit folgendem Code kann ein Bild in der DB gespeichert werden:


Dim stream
Set stream = Server.CreateObject( "ADODB.Stream" )
stream.Type = 1

Set rs = Server.CreateObject( "ADODB.Recordset" )
rs.Open "SELECT image FROM tImages", db, 1, 3

stream.Open
stream.LoadFromFile("c:\test1.gif")

rs.Fields("Image").Value = stream.Read
rs.Update

stream.Close
rs.Close


Die Tabelle Image liegt in einer SQL Server Datenbank. Das Attribut "image" hat den Datentyp "image".

Um das Bild nun wieder auszulesen folgenden Code verwenden:


Response.ContentType = "image/gif"

Set db = Server.CreateObject( "ADODB.Connection" )
db.Open Session("dbConnection")

set rsTest = db.Execute("SELECT image FROM tImages")

Response.BinaryWrite rsTest.Fields("Image").Value

db.Close
Set db = Nothing


Der Code hat natürlich noch Protoypencharakter. Es fehlen noch einige Abfragen (z.B. ob der Eintrag in der DB ein NULL Wert ist) und die Codeoptimierung. Aber Grundsätzlich funktioniert das so unter dem IIS4 und SQL Server 7.

Noch ein paar Hinweise:
Die Zeile Response.ContentType = "image/gif" muss natürlich entsprechend angepasst werden sollte es sich nicht um gif Dateien handeln.
Wichtig ist auch, dass der Code für das Auslesen der gif Datei in einer seperaten ASP Seiten gespeichert wird. Diese ASP Seite darf unter keinen Umständen irgendwelche HTML Elemente beinhalten. D.h. die erste Zeile dieser ASP Seite fängt mit einem <% an und die letzte hört mit einem %> auf. Zwischen diesen beiden Elementen darf auf keinen Fall HTML ausgebenen werden. Um das Bild nun im Web auszugeben, muss auf der ASP Seite, die das Bild darstellen soll, folgendes Codefragment platziert werden:
<img src="getImage.asp">
Die Datei getImage.asp beinhaltet dabei den Code, der das Bild aus der DB ausliesst.

Gruß Dirk