IM VARCHAR (data:image/png;base64,iVBORw0KGgoAAAANSU...)
kann ich die Daten lesen und im LONGTEXT (뎵½辵뾹؞��ܞ¶)
sind die Zeichen anders.
Base64 ist
ASCII, LongText scheint aber UFT8 zu enthalten.
Mir scheint das Speichern als Text, egal ob als VarChar oder als LongText irgendwie äußerst ungeeignet. Mit PDFs wird das dann sicherlich erst recht scheitern.
Das Folgende ist nur arg geraten, da gerade keine Testmöglichkeit gegeben ist:
Delphi-Quellcode:
function TDataModule_Client.Save_NewLogo(Logo_string:
string): boolean;
var
BF : TBlobField;
TS : TStringStream;
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
TS := TStringStream.Create(Logo_string);
TS.Position := 0;
BF := DataSet_NewLogo.FieldByName('
logo')
as TBlobField;
BF.LoadFromStream(TS);
TS.Free;
end;
DataSet_NewLogo.Post;
DataSet_NewLogo.ApplyUpdates;
Result := true;
except
on :
Exception do begin
// Im Produktivbetrieb hier Fehler loggen.
ShowMessage(e.Exception);
Result := false;
end;
end;
end;
Wären eventuell der Typ
VARBINARY(Maxmimalgröße in Byte) oder
LongBlob nutzbare Alternativen?
Meine Befürchtung:
Die Speicherung als Strings, Text, VarChar, ... wird scheitern, da hier immer auf die Zeichensätze zu achten sein wird, $00 sicherlich immer Strings "zerstören" wird, spätestens bei PDF-Dateien ein gerantiertes Ko-Kriterium.