【问题标题】:Delphi 7 - Decode base 64 string to a fileDelphi 7 - 将 base 64 字符串解码为文件
【发布时间】:2014-11-27 15:45:06
【问题描述】:

我正在尝试找到一种方法来解码 base64 字符串,然后使用 Delphi 7(这个特定的 Delphi 版本)将其保存到文件中。

base64 字符串本身是一个 PDF 文件,编码为 base64 作为 HL7 消息的一部分。我发现的几乎所有示例都与 Delphi 7 不兼容。

有人可以帮忙吗?

更新:

根据 Remy Lebeau 的建议,使用 TidDecoderMIME。 这是解码并保存到二进制文件的正确方法吗?

var MStream:TMemoryStream; Decoder:TIdDecoderMIME; Base64: string; begin Decoder := TIdDecoderMIME.Create(nil); MStream := TMemoryStream.Create; Base64 := 'abcd1234'; Decoder.DecodeToStream(Base64,MStream); MStream.SaveToFile('example.pdf'); FreeAndNil(Decoder); FreeAndNil(MStream); end;

【问题讨论】:

  • 到目前为止你到底尝试了什么?
  • EncdDecd 单元具有直接解码为流的功能。解码流。发送带有编码 base64 的字符串流和文件流。
  • 自己测试一下看看是不是正确的方法!也许使用一些 try..finally 块。
  • 我对网络解码器motobit.com/util/base64-decoder-encoder.asp进行了测试,结果不同。网络解码器产生了正确的输出文件。虽然上面的 Delphi 代码产生了错误的输出文件,但文件大小更大。 MemoryStream 的保存方式是否不同?
  • 我的错,我在日常工作中犯了一个错误。实际上,上面的代码有效!在德尔福 7 上:)

标签: delphi base64 delphi-7 decode


【解决方案1】:

Delphi 附带 Indy,它有一个用于解码 base64 字符串的TIdDecoderMIME 类。

【讨论】:

  • 我不熟悉 TIdDecoderMIME。更新的代码示例会是正确的方法吗?
  • @ewlung:对于 Indy 9,是的。对于 Indy 10,解码器接口有所不同,但有一个 class 过程将所有内容包装到一个语句中:TIdDecoderMIME.DecodeStream(Base64, MStream);。在任一版本中,您都可以选择将TMemoryStream 替换为TFileStream,因为您希望将解码后的数据保存到文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 2018-01-22
相关资源
最近更新 更多