簡體   English   中英

使用Delphi 2007將Base64字符串作為二進制文件保存到磁盤

[英]Saving a Base64 string to disk as a binary using Delphi 2007

我有一個Base64二進制字符串,它是由第三方供應商發送給我們的XML文檔的一部分,我希望能夠將其保存回其原始文件格式(jpg)。

使用這個問題的可接受答案“使用php將base64字符串保存為二進制文件”可以將字符串保存為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;

Internet Direct(Indy)庫在IdCoderMIME.pas中包含支持Base64編碼且易於使用的類:TIdEncoderMIME和TIdDecoderMIME。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM