![]() |
AW: Image in Blob field (Web-Application)
Hallo zusammen,
endlich habe ich einen Weg gefunden, um ein Logo in der Datenbank zu speichern und auch wieder zu laden... Ich habe meine App komplett auf den Aufruf von Services umgebaut. Wenn ich das Logo in das TWebImageControl geladen habe, kann ich es jederzeit mit
Delphi-Quellcode:
als String bekommen. Ich habe festgestellt, dass ich diesen String zwar problemlos in ein DataSet laden kann, bei dem Versuch, daraus dann ein JSONObject zu machen, wird der String irgendwie verändert.
WebImageControl1.Base64
Ich habe daher selber ein JSONObject erstellt und dieses dem Service-Aufruf als Parameter mitgegeben. Damit funktioniert es.
Delphi-Quellcode:
Auf der Server-Seite passiert Folgendes:
procedure TDataModule_Client.Save_NewLogo(AOnDataRecieved: TDataRecievedCallback; Image_String: string);
procedure OnResponse(Response: TXDataClientResponse); begin if Assigned(AOnDataRecieved) then begin AOnDataRecieved(); end; end; var JSVal: JSValue; JSObj: TJSObject; JSString:string; begin Try JSString:= '{"company_id": '+IntToStr(DataSet_NewCompanycompany_id.AsInteger)+', '+ '"picture": "'+'data:image/png;base64,'+Image_String+'"}'; JSObj:=TJSJSON.parseObject(JSString); TVc_XDataWebClient.RawInvoke('ITV_CreateNewCustService.Insert_Logo',[JSObj], @OnResponse); Except MessageDlg('Es hat einen Fehler beim Speichern gegeben',WEBLib.Dialogs.mtError, [mbOK]); Exit; End; end;
Delphi-Quellcode:
Auslesen tue ich es mit einem normalen Select und behandle das Ganze wie einen String.
function TTV_CreateNewCustService.Insert_Logo(JSObj: TJSONObject): integer;
var Query: TFDQuery; begin Query:= TFDQuery.Create(nil); Query.Connection:=MySQL.MySQL_Cnnctn; Try Query.SQL.Clear; Query.SQL.Add('insert into company_logo '+ '(company_id, logo_image) '+ 'values '+ '(:company_id, :logo_image); '+ 'select last_insert_id() as ID '); Query.ParamByName('company_id').AsInteger:= StrToIntDef(TJSONString(JSObj.GetValue('company_id')).Value, 0); Query.ParamByName('logo_image').AsString:= TJSONString(JSObj.GetValue('picture')).Value; Query.Open; Result:= Query.FieldByName('id').AsInteger; Finally Query.Free; End; end; Vielleicht hilft es jemandem weiter. Vielen Dank für die Unterstützung Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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