zoukankan      html  css  js  c++  java
  • 使用INDY解决BASE64回车换行问题

    使用INDY解决BASE64回车换行问题

    使用DELPHI EncodeStream(),对流数据进行BASE64编译以后,每隔75个字符,就会添加回车换行符(#$D#$A),这会造成许多问题。

    网上许多解决方法,是对BASE64的字符串中的回车换行符,使用ReplaceStr(str,#$D#$A,''...)替换掉回车换行符。

    虽然这样可以解决问题,但多执行了操作,从而影响了程序的性能。

    下面使用INDY来帮助解决问题:

    INDY的BASE64编码,不会每隔75个字符,就会添加回车换行符(#$D#$A)。

    uses IdCoderMIME

    var IdEncoderMIME: TIdEncoderMIME;
    ms := TMemoryStream.Create; IdEncoderMIME := TIdEncoderMIME.Create(nil); try TZipTools.ZipStream(stream, ms); // zip ms.Position := 0; {$IF CompilerVersion <= 15} // d7 Result := IdEncoderMIME.Encode(ms); {$ELSE} Result := IdEncoderMIME.EncodeStream(ms); {$IFEND} finally ms.Free; IdEncoderMIME.Free; end;

     

    IdDeCoderMIME: TIdDeCoderMIME;
      ms := TMemoryStream.Create;
      IdDeCoderMIME := TIdDecoderMIME.Create(nil);
      try
        {$IF CompilerVersion <= 15}    // d7
        IdDeCoderMIME.DecodeToStream(str, ms);      // indy9
        {$ELSE}
        IdDeCoderMIME.DecodeStream(str, ms);        // indy10
        {$IFEND}
        ms.Position := 0;
        TZipTools.UnZipStream(ms, stream);  // unzip
      finally
        ms.Free;
        IdDeCoderMIME.Free;
      end;
    

      

     

  • 相关阅读:
    友链
    Vue打包后处理跨域
    es6 Promise
    express get和post数据
    Nodejs登陆注册应用
    bootstrap按钮
    vue-router
    vue--transition多个元素运动
    $ git push -u origin masterremote时出现错误: error: GH007: Your push would publish a private email address.
    vue.js监听
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/11096076.html
Copyright © 2011-2022 走看看