Saving a Base64 string to disk as a binary using Delphi 2007

前端 未结 2 1027
有刺的猬
有刺的猬 2021-01-07 12:22

I have a Base64 binary string that is part of an XML document that is sent to us by a 3rd party supplier, I would like to be able to save it back to its original file format

相关标签:
2条回答
  • 2021-01-07 12:31

    OmniXMLUtils.pas from the OmniXML project contains following functions:

    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;
    

    The Base64Decode(string, TStream) should do the trick. For the TStream parameter you can pass it TFileStream like this:

    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;
    
    0 讨论(0)
  • 2021-01-07 12:33

    The Internet Direct (Indy) library contains classes in IdCoderMIME.pas which support Base64 encoding and are easy to use: TIdEncoderMIME and TIdDecoderMIME.

    0 讨论(0)
提交回复
热议问题