Base64 strings to transfer files lazarus / 38-Networking and Web Programming ---------------------------------------------------------------------- xinyiman · 2016-02-28 14:19 Speaking to a forum user recently told me that he used a Base64 strings to transfer files. Who tells me how I can put a file into a string and then the string pull out the file? Thamk you ---------------------------------------------------------------------- balazsszekely · 2016-02-28 16:08 Here you go: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i uses base64; function FileToBase64(const AFile: String; var Base64: String): Boolean;var  MS: TMemoryStream;  Str: String;begin  Result := False;  if not FileExists(AFile) then    Exit;  MS := TMemoryStream.Create;  try    MS.LoadFromFile(AFile);    if MS.Size > 0 then    begin      SetLength(Str, MS.Size div SizeOf(Char));      MS.ReadBuffer(Str[1], MS.Size div SizeOf(Char));      Base64 := EncodeStringBase64(Str);      Result := True;    end;  finally    MS.Free;  end;end; function Base64Tofile(const AFile, Base64: String): Boolean;var  MS: TMemoryStream;  Str: String;begin  Result := False;  MS := TMemoryStream.Create;  try    Str := DecodeStringBase64(Base64);    MS.Write(Str[1], Length(Str) div SizeOf(Char));    MS.Position := 0;    MS.SaveToFile(AFile);    Result := FileExists(AFile);  finally    MS.Free;  end;end; procedure TForm1.Button1Click(Sender: TObject);var  Base64: String;begin  Base64 := '';  if not FileToBase64('Test_In.txt', Base64) then  begin    ShowMessage('Cannot convert file to base64!');    Exit;  end;  Memo1.Text := Base64;  //convert back  if not Base64Tofile('Test_Out.txt', Base64) then  begin    ShowMessage('Cannot convert base64 to file!');    Exit;  end;end; ---------------------------------------------------------------------- engkin · 2016-02-29 01:34 A different way using streams based on the source of EncodeStringBase64 & DecodeStringBase64: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i uses  Classes, sysutils, base64; function StreamToBase64(AInputStream: TStream): string;var  OutputStream: TStringStream;  Encoder: TBase64EncodingStream;begin  Result := '';   OutputStream := TStringStream.Create('');  Encoder := TBase64EncodingStream.Create(OutputStream);   try    Encoder.CopyFrom(AInputStream, AInputStream.Size);    Encoder.Flush;     Result := OutputStream.DataString;  finally    Encoder.Free;    OutputStream.Free;  end;end; function Base64ToStream(const ABase64:string; AOutStream: TStream; const AStrict: Boolean=false):Boolean;var  InStream: TStringStream;  Decoder: TBase64DecodingStream;begin  Result := False;  InStream := TStringStream.Create(ABase64);  try    if AStrict then      Decoder := TBase64DecodingStream.Create(InStream, bdmStrict)    else      Decoder := TBase64DecodingStream.Create(InStream, bdmMIME);    try       AOutStream.CopyFrom(Decoder, Decoder.Size);       Result := True;    finally      Decoder.Free;    end;  finally    InStream.Free;  end;end; function Base64ToFile(const Base64, AFile: String): boolean;var  OutStream: TFileStream;begin  Result := False;  OutStream := TFileStream.Create(AFile, fmCreate or fmShareExclusive);  try     Base64ToStream(Base64, OutStream);     Result := True;  finally    Outstream.Free;  end;end; function FileToBase64(const AFile: String): string;var  InputStream: TFileStream;begin  if not FileExists(AFile) then    Exit('');   InputStream := TFileStream.Create(AFile, fmOpenRead or fmShareDenyWrite);  try    Result := StreamToBase64(InputStream);  finally    InputStream.Free;  end;end;