delphi2007中间的indy控件里面base64编码器没有了DecodeToStream函数怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi2007中间的indy控件里面base64编码器没有了DecodeToStream函数怎么办?相关的知识,希望对你有一定的参考价值。

delphi2007中间的indy控件里面base64编码器没有了DecodeToStream函数怎么办?

原来在delphi7下面写了个程序,
使用了indy控件的iddecodermime1.DecodeToStream(str,fs);
其中str为base64编码的字符串,fs为一个steam数据流;
现在到了delphi2007报错了,查看后发现是indy控件没有了DecodeToStream这个函数了:(

各位高人指点一下,如果实现将xml里面的字符串字段解码然后写入文件了,其实我就是将文件用base64编码写入xml的!

编码写入xml代码没有问题:
fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
str:=IdEncoderMIME1.Encode(fs,MaxInt);

解码后写入文件不行:
fs := TFileStream.Create(SaveDialog1.FileName, fmCreate);
iddecodermime1.DecoderToStream(str,fs);
因为indy没有了decodertostream

参考技术A Delphi 2007 的Indy 版本是Indy 10
Delphi 7 自带的Indy是 Indy 9

IdHTTPServer(indy10)开发REST中间件

IdHTTPServer(indy10)开发REST中间件

 

浏览器通过“get”方式查询数据URL样例:http://127.0.0.1:7777/query?sql=select * from t1

/query 表示是“查询”命令字

?后面是SQL参数

 

服务端代码:

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
method, sql: string;
{$IFDEF ado}
dm: TfrmDMado;
{$ENDIF}
{$IFDEF odac}
dm: TfrmDModac;
{$ENDIF}
begin
method := ARequestInfo.Document;  // 获取命令字
if method = ‘‘ then
Exit;
{$ifdef ado}
CoInitialize(nil);
{$endif}
try
if method = ‘/query‘ then  // 查询数据
begin
sql := ARequestInfo.Params.Values[‘sql‘];  // 取SQL参数
if sql = ‘‘ then
Exit;
AResponseInfo.ResponseNo := 0;
AResponseInfo.ContentType := ‘text/html‘;
{$IFDEF ado}
dm := TfrmDMado.Create(nil);
{$ENDIF}
{$IFDEF odac}
dm := TfrmDModac.Create(nil);
{$ENDIF}
try
AResponseInfo.ContentText := dm.Query(sql);  // 返回数据引擎查询到的JSON格式的数据
AResponseInfo.WriteContent;  // 给申请者回复
finally
dm.Free;
end;
end;
except
on E: Exception do
begin

end;
end;
{$ifdef ado}
CoUninitialize;
{$endif}
end;

 

以上是关于delphi2007中间的indy控件里面base64编码器没有了DecodeToStream函数怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi - Indy idFTP控件实现文件的上传和下载

INDY10 BASE64编码

delphi7 Delhi 10.2 sgcWebSockets 控件安装.

delphi ftp上传下载

Delphi 2007 - ManualFloat 导致小部件控件浮动在所有其他窗口之上

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