memortstream Base64编码和filestream base64编码不同

memorystream base64

function BaseImage(fn: string): string;

var
  m1: TMemoryStream;
  m2: TStringStream;
  str: string;
begin
  m1 := TMemoryStream.Create;
  m2 := TStringStream.Create;
  m1.LoadFromFile(fn);
  EncdDecd.EncodeStream(m1, m2);                       // 将m1的内容Base64到m2中
  str := m2.DataString;
  str := StringReplace(str, #13'', [rfReplaceAll]);  // 这里m2中数据会自动添加回车换行,所以需要将回车换行替换成空字符
  str := StringReplace(str, #10'', [rfReplaceAll]);
  result := str;                                       // 返回值为Base64的Stream
  m1.Free;
  m2.Free;
end;
 
filestream base64

需要uses IdCoderMIME;

function TForm1.Base64E(Path: string): string;
var
filepath: string;
filestream: TFileStream;
EncoderMIME: TIdEncoderMIME;
encode_result: string;
begin
EncoderMIME := TIdEncoderMIME.Create(self);
filestream := TFileStream.Create(Path, fmOpenRead);
result := EncoderMIME.Encode(filestream);
filestream.Free;
end;

原文地址:https://www.cnblogs.com/zyb2016/p/11165214.html