Speicher einen Base64-String auf der Festplatte als binäre mit Delphi 2007
-
22-08-2019 - |
Frage
ich eine Base64 Binärkette haben, die Teil eines XML-Dokuments ist, die von einer dritten Partei Lieferanten an uns geschickt wird, würde Ich mag, um es in seine ursprüngliche Dateiformat (jpg) zurück zu speichern.
die akzeptierte Antwort auf dieser Frage Verwendung „einen base64-String auf der Festplatte als binäres mit pHP speichern“ ich den String in eine jpg mit wenig Aufwand sparen kann, so dass ich weiß, dass die Zeichenfolge in guter Form ist und eine JPG-Datei.
Aber wie mache ich das in Delphi 2007?
Suche im Netz fand ich eine Anleitung, wie man die Base64 in eine TByteDynArray umwandeln und speichern, aber es funktioniert nicht richtig. Ich habe auch gespielt mit Indys IdDecoderMIME über, aber mit ohne Erfolg.
Hat jemand wissen, wie dies zu tun, oder wo ich suchen soll?
Lösung
OmniXMLUtils.pas von der OmniXML Projekt enthält folgende Funktionen:
function Base64Decode(encoded, decoded: TStream): boolean; overload;
function Base64Decode(const encoded: string; decoded: TStream): boolean; overload;
function Base64Decode(const encoded: string; var decoded: string): boolean; overload;
function Base64Decode(const encoded: string): string; overload;
procedure Base64Encode(decoded, encoded: TStream); overload;
procedure Base64Encode(decoded: TStream; var encoded: string); overload;
function Base64Encode(decoded: TStream): string; overload;
function Base64Encode(const decoded: string): string; overload;
procedure Base64Encode(const decoded: string; var encoded: string); overload;
Die Base64Decode (string, TStream) sollte es tun. Für den TStream Parameter kann es passieren TFileStream wie folgt aus:
procedure SaveBase64ToFile(const encoded, fileName: string);
var
fs: TFileStream;
begin
fs := TFileStream.Create(fileName, fmCreate);
try
if not Base64Decode(encoded, fs) then
raise Exception.Create('Invalid data!');
finally FreeAndNil(fs); end;
end;
Andere Tipps
Das Internet Direct (Indy) Bibliothek enthält Klassen in IdCoderMIME.pas die Base64-Codierung unterstützen und sind einfach zu bedienen. TIdEncoderMIME und TIdDecoderMIME