Re0*_*ess 1 delphi base64 web-services 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;
Run Code Online (Sandbox Code Playgroud)
Base64Decode(字符串,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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4339 次 |
| 最近记录: |