Domanda

ho una stringa binaria Base64 che fa parte di un documento XML che viene inviato a noi da un fornitore di 3a parte, mi piacerebbe essere in grado di salvare al suo formato originale (jpg).

Uso della risposta accettata da questa domanda "salvare una stringa base64 su disco come un binario utilizzando php" posso salvare la stringa in un jpg con poco sforzo, quindi so la stringa è in buona forma ed è un file JPG.

Ma come faccio a fare questo in Delphi 2007?

Guardando in rete ho trovato un tutorial su come convertire la Base64 in un TByteDynArray, e salvare, ma non funziona bene. Ho anche suonato in giro con IdDecoderMIME di Indy, ma con senza successo.

Se uno sa come fare questo, o dove dovrei essere alla ricerca?

È stato utile?

Soluzione

OmniXML progetto contiene le seguenti funzioni:

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;

Il Base64Decode (stringa, TStream) dovrebbe fare il trucco. Per il parametro TStream si può passare TFileStream in questo modo:

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;

Altri suggerimenti

L'(Indy) libreria di Internet diretto contiene le classi in IdCoderMIME.pas che supportano la codifica Base64 e sono facili da usare:. TIdEncoderMIME e TIdDecoderMIME

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top