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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top