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
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控件实现文件的上传和下载
delphi7 Delhi 10.2 sgcWebSockets 控件安装.