AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild in MySQL (Blob) mit mysql.pas speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Bild in MySQL (Blob) mit mysql.pas speichern

Ein Thema von Morfio · begonnen am 9. Apr 2004 · letzter Beitrag vom 27. Feb 2020
Antwort Antwort
Seite 1 von 3  1 23      
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#1

Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 14:50
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 ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 9. Apr 2004, 16:48
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#3

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

  Alt 9. Apr 2004, 17:11
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 ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 9. Apr 2004, 17:40
Mit dem Filestream öffnest du die Datei und liest die Daten in einen Stringbuffer (via Read).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#5

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

  Alt 9. Apr 2004, 19:55
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 ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

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

  Alt 9. Apr 2004, 20:11
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#7

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

  Alt 9. Apr 2004, 20:24
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 ...
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#8

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

  Alt 10. Apr 2004, 12:50
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.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 10. Apr 2004, 12:55
Tut mir leid, da muss ich passen. Vergleich doch mal die Dateigröße oder ein MD5- oder CRC-Hash.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#10

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

  Alt 10. Apr 2004, 13:13
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 Uhr.
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