![]() |
Bild in MySQL (Blob) mit mysql.pas speichern
Hallo,
ich habe jetzt überall gesucht, aber keine Lösung gefunden. Ich benutze die mysql.pas von ![]() Kennt jemand ein Tutorial, wie man das macht? Vielen Dank, Morfio ... |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Zitat:
![]() Bilder speichern sollte gehen, indem du dein Bild per Stream in einen String umwandelst und diesen via mysql_real_query an die Datenbank schickst. |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Hi,
danke für die Antwort. Wie konvertiere ich denn einen TFileStream (ich denke, den brauche ich) in einen String? Finde keine Funktion dafür. Viele Grüße, Morfio ... |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Mit dem Filestream öffnest du die Datei und liest die Daten in einen Stringbuffer (via Read).
|
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Hallo,
ok, mein Versuch zeigt nichts an, was kann denn daran falsch sein (ich mache das zum ersten Mal):
Delphi-Quellcode:
Vielen Dank für Eure Hilfe,
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TFileStream; S: String; begin Stream := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.jpg', fmOpenRead or fmShareDenyNone); try Stream.Read(S, Length(S)); Memo1.Text := S; finally Stream.Free; end; end; Morfio ... |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Versuchs mal so:
Delphi-Quellcode:
Dass du in dem Memo nicht viel siehts, liegt daran, dass irgendwann ein Nullzeichen auftaucht. Windows erkennt so das Ende von Strings und beendet die Ausgabe im Memo.
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TFileStream; S: String; begin Stream := TFileStream.Create('c:\p1.jpg', fmOpenRead or fmShareDenyNone); try SetLength(s, Stream.Size); Stream.Read(S, Stream.Size); Memo1.Text := S; finally Stream.Free; end; end; |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Hi,
vielen Dank. Jetzt steht im Memo ein (komisches) Zeichen. Ich denke, es funktioniert jetzt. Werde es mal ausprobieren und in einer DB speichern. Vielen Dank, Morfio ... |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Hallo nochmal,
in dem folgenden Abschnitt muß noch irgendwo ein Fehler sein, denn MySQLCC und PHP sagen mir beide, dass das gespeicherte Bild fehlerhaft ist:
Delphi-Quellcode:
Das kann ja eigentlich kein großer Fehler mehr sein. Woran könnte es denn vielleicht noch liegen?
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TFileStream; S: String; query: String; begin Stream := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.jpg', fmOpenRead or fmShareDenyNone); try SetLength(S, Stream.Size); Stream.Read(S, Stream.Size); finally Stream.Free; end; query := 'INSERT INTO Bild (Name, Bild) VALUES (' + QuotedStr('testbild') + ', ' + QuotedStr(S) + ')'; mysql_real_query(myCon, PChar(query), Length(query)); end; Vielen Dank, Morfio ... PS: Das Bild "test.jpg" ist nicht fehlerhaft, IrfanView kann es ohne Probleme vollständig anzeigen. |
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Tut mir leid, da muss ich passen. Vergleich doch mal die Dateigröße oder ein MD5- oder CRC-Hash.
|
Re: Bild in MySQL (Blob) mit mysql.pas speichern
Hmm, der liest den Stream per Read gar nicht ein. Was er in die Datenbank schreibt ist einfach nur ein leerer String. Die Funktion Read muss an der Stelle irgendwie falsch sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz