Entwickler-Ecke
Datenbanken - Bild in einem Mysql-Blob feld speichern und auslesen
Shmidt_dlt - Do 19.09.02 22:02
Titel: Bild in einem Mysql-Blob feld speichern und auslesen
Wie kann ich eine Bilddatei ohne TDBImage mit hilfe der Zeos komponenten in ein Blob feld speichern?
Ich benutze wie gesagt einen Mysql-Server und will ein Feld vom Typ BLOB füllen???
:shock:
EraserBM - Do 26.09.02 14:40
Hallo erstmal,
also ich würd das mit Bilder in ner Datenbank speichern lassen vor allem bei MySql! MySQL kann BLOBs (binary large objects) nicht fragmentarisch bearbeiten das heißt wenn du ne Abfrage startest muss er das ganze Bild aus der DB laden! Ich hab auch mit MYSql gearbeitet und auch Bilder in der DB gespeichert ! So jetzt hab ich da 10 * 18 KB pro Datensatz in die DB gespeichert, hört sich jetzt nich viel an aber wenn du des dann mit 600 Datensätzen hochrechnest kommst du auf 108 MB und wenn du jetzt bei einer Abfrage die listenfelder mit nimmst dann schaut des mit der Preformance nicht mehr so rosig aus! Ich würd nur Pfad in die DB speicher und dir auf deinem Server ne Verzeichnistruktur anlegen! Aber falls dus unbedingt so haben willst:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| VAR Datei : TFileStream; BlobBild : TStream; BEGIN Datei := TFileStream.Create('C:\test.bmp', fmOpenRead); BlobBild := ZMySqlTbl1.CreateBlobStream(ZMySqlTbl1.FieldByName('BILD'), bmWrite); TRY BlobBild.CopyForm(Datei, Datei.Size); FINALLY BlobBild.Free; Datei.Free; END; END; |
mfg
Matthias
Shmidt_dlt - Do 26.09.02 20:44
hmmm danke für den tip das mit den verzeichnissen wollte ich ja auch zuerst machen aber dann wurde mir gesagt das die datensätze über ein PhP - script Übersinternet angezeigt werden sollen...
und das mit dem relativen Pfad geht nicht weil keine ständige domain verfügbar wäre.
Dabei fällt mir gerade en könnte man nicht das mit einem CGI-script machen, das läuft ja immerhin auf dem server ab und kann die bilder dann ja auch von dort laden...
Trotzdem danke erstmal ich werd mal den code ausprobieren und sag dann bescheid
Stephan
bis11 - Fr 27.09.02 07:55
Hi,
was hälst Du denn von folgender Theorie mit den Verzeichnissen :
du legst Dir eine Verzechnisstruktur an, wo Deine Bilder drin abeglegt werden. Dann gibst Du in einem Datenfeld den relativen Pfad ohne Domain an, wo das Bild liegt. Willst Du Dir nun das Bild über Dein Programm anschauen, ergänzt Du einfach den relativen Pfad so, das Dir Dein eigenes Programm das anzeigen kann und für die Webseite übergibste einfach den Eintrag aus der Datenbank.
Beispiel
Datenfeld - Inhalt
----------------------------------------------------------------
Pfad zum Bild - ../Images/bild1.jpg
In der Webseite übergibste dann den Inhalt um das Bild anzuzeigen. Für Deinen Programm formatierste dann den Inhalt folgendermaßen um :
C:\MySQL\Datenbank\Images\Bild1.jpg
EraserBM - Fr 27.09.02 08:55
Bingo, genau so gehörts gemacht!
Also hab gestern das Thema nochmal durchgekaut, und folgendes festgestellt:
Wenn du Bilder in ner MySQLDB speicherst und dann mit den Zeos Komponenten darauf zugreifen möchtest wird das schwierig weil die Comps dann so langs werden (die Abfragen) das es mit 2000 Datensätzen a. 10 Bildern kaum noch damit zuarbeiten ist (vielleicht Irre ich mich ja auch, falls ja bitte ich um richtigstellung!)
Soweit ich gesehen hab handled PHP die ganze geschichte eigentlich noch ziemlich gut!
mfg
Matthias
neojones - Fr 27.09.02 14:33
Hallo Matthias,
ich weiß nicht, wie die ZEOS-Lib das handhabt, aber vom Prinzip ist mir das neu: Das passiert eigentlich nur dann, wenn man das BLOB-Feld auf den Index setzt.
Viele Grüße,
Matthias Brinkmann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!