Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild in MySQL (Blob) mit mysql.pas speichern (https://www.delphipraxis.net/19823-bild-mysql-blob-mit-mysql-pas-speichern.html)

Morfio 9. Apr 2004 14:50


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 http://www.fichtner.net/delphi/mysql.delphi.phtml . Nun möchte ich in einer MySQL-Datenbank innerhalb eines Blob-Feldes ein Bild speichern und das auch anzeigen und ändern.

Kennt jemand ein Tutorial, wie man das macht?

Vielen Dank,

Morfio ...

Chewie 9. Apr 2004 16:48

Re: Bild in MySQL (Blob) mit mysql.pas speichern
 
Zitat:

Zitat von Morfio
Kennt jemand ein Tutorial, wie man das macht?

Nicht konkret zum Speichern von Bildern, aber zum Zugriff via mysql.pas hab ich mal was geschrieben: http://www.delphipraxis.net/internal...l+api+tutorial

Bilder speichern sollte gehen, indem du dein Bild per Stream in einen String umwandelst und diesen via mysql_real_query an die Datenbank schickst.

Morfio 9. Apr 2004 17:11

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 ...

Chewie 9. Apr 2004 17:40

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).

Morfio 9. Apr 2004 19:55

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:
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;
Vielen Dank für Eure Hilfe,

Morfio ...

Chewie 9. Apr 2004 20:11

Re: Bild in MySQL (Blob) mit mysql.pas speichern
 
Versuchs mal so:
Delphi-Quellcode:
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;
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.

Morfio 9. Apr 2004 20:24

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 ...

Morfio 10. Apr 2004 12:50

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:
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;
Das kann ja eigentlich kein großer Fehler mehr sein. Woran könnte es denn vielleicht noch liegen?

Vielen Dank,

Morfio ...

PS: Das Bild "test.jpg" ist nicht fehlerhaft, IrfanView kann es ohne Probleme vollständig anzeigen.

Chewie 10. Apr 2004 12:55

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.

Morfio 10. Apr 2004 13:13

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 14:49 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz