AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Image in Blob field (Web-Application)
Thema durchsuchen
Ansicht
Themen-Optionen

Image in Blob field (Web-Application)

Ein Thema von Ykcim · begonnen am 24. Nov 2020 · letzter Beitrag vom 19. Dez 2020
 
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#10

AW: Image in Blob field (Web-Application)

  Alt 27. Nov 2020, 10:57
Du hast recht, so müsste es gehen. Ich habe mittlerweile einen Teil-Erfolg erzielt. Mit folgenden Proceduren kann ich ein Image in der DB speichern und auch wieder auslesen. Aber dazu muss ich es als ein VARCHAR() definieren. Wenn ich es mit einem Blob versuche, kommen irgendwie keine Daten wieder zurück...

Speicher-Procedure
Delphi-Quellcode:
function TDataModule_Client.Save_NewLogo(Logo_string: string): boolean;
begin
   Try
      if DataSet_NewLogo.State=dsBrowse then
         DataModule_Client.DataSet_NewLogo.Insert;
      DataSet_NewLogo.FieldByName('company_id').AsInteger:=DataSet_NewCompany.FieldByName('company_id').AsInteger;
      if Logo_string<>'then begin
         DataSet_NewLogo.FieldByName('logo').AsString:=Logo_string; //Das ist das Blob-Feld
         DataSet_NewLogo.FieldByName('logo_string').AsString:=Logo_string; //Der gleiche Wert noch einmal in das VARCHAR Feld
      end;
      DataSet_NewLogo.Post;
      DataSet_NewLogo.ApplyUpdates;
      Result:= true;
   Except
      Result:= false;
   End;
end;
Dabei wurde der Logo_String beim Aufruf erzeugt und übergeben:
Delphi-Quellcode:
var IMG_Base64: string;
begin
   IMG_Base64:=Img_Logo2.DataURL;
   DataModule_Client.Save_NewLogo(Img_Base64);
Wenn ich das Image wieder aus der DB lade weise ich es mit dieser Procedure dem Image wieder zu:
Delphi-Quellcode:
var Img_Base64: string;
begin
   DataModule_Client.DataSet_NewLogo.Cancel;
   DataModule_Client.DataSet_NewLogo.Open;
   Img_Base64:='data:image/png;base64,'+DataModule_Client.DataSet_NewLogo.FieldByName('logo_string').AsString;
   Img_Logo2.URL:=Img_Base64;
end;
Das klappt, wenn ich das mit dem VARCHAR-Feld "Logo_String mache, wenn ich stattdessen das Blob-Feld "logo" heranziehe, erhalte ich keinen auslesbaren Wert.

Verwenden tue ich eine MariaDB 10 und definiert ist das Feld einfach als Blob...

Ich würde es wirklich gerne mit einem Blob realisieren, denn sonst darf das Feld nur ca. 21.800 Zeichen haben. Und ich muss im weiteren Programm-Verlauf auch noch PDF-Dokumente speichern...

Vielen Dank für jede Anregung

Patrick
Patrick
  Mit Zitat antworten Zitat
 


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 03:34 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