web-services - 使用Delphi 2007将Base64字符串作为二进制文件保存到磁盘

标签 web-services delphi base64 delphi-2007

我有一个Base64二进制字符串,它是由第三方供应商发送给我们的XML文档的一部分,我希望能够将其保存回其原始文件格式(jpg)。

使用这个问题"saving a base64 string to disk as a binary using php"的可接受答案,我可以毫不费力地将字符串保存为jpg,因此我知道该字符串格式良好,并且是JPG文件。

但是如何在Delphi 2007中做到这一点?

在网上查看时,我找到了一个有关如何将Base64转换为TByteDynArray并保存的教程,但是它不能正常工作。我也玩过Indy的IdDecoderMIME,但没有成功。

有谁知道该怎么做,或者我应该去哪里看?

最佳答案

OmniXML项目中的OmniXMLUtils.pas包含以下功能:

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;


Base64Decode(string,TStream)应该可以解决问题。对于TStream参数,可以像这样将其传递给TFileStream:

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;

关于web-services - 使用Delphi 2007将Base64字符串作为二进制文件保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690475/

相关文章:

java - 在java中调用Web服务SOAP

web-services - 是否可以在 GlassFish 3.1 上为无状态 ejb Web 服务定义 servlet 过滤器

mysql - MySQL中的base64编码

forms - 如何自动将焦点返回到我的应用程序

java - 无法将简单的 PNG 下载脚本从 PHP 转换为 Java

wcf - 413 Request Entity Too Large in wcf 服务上传大图片文件时

java - 在 Spring 3.1 mvc webservice 中设置响应的内容类型

java - SOAP 服务中的时区不匹配

德尔福XE : Lost Library path

delphi - 将字符串(十六进制整数)转换为十进制整数