【发布时间】:2014-11-06 19:50:51
【问题描述】:
使用TIdHTTPServer (Indy 10.6),如何跟踪每个请求(关闭连接时)发送到客户端(用户浏览器)的字节数?
procedure onCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo;
begin
AResponseInfo.ContentStream := TFileStream.Create('C:/HugeFile.zip', fmOpenRead or fmShareCompat);
AResponseInfo.ContentLength := AResponseInfo.ContentStream.Size;
AResponseInfo.WriteHeader;
AResponseInfo.WriteContent;
AResponseInfo.ContentStream.Free;
AResponseInfo.ContentStream := nil;
end;
例如,在日志文件中:
2014-11-06 20:32:00 - IPAddress 84.XXX.XXX.XXX 下载 1000000 字节 (100%) 2014-11-05 16:05:00 - IPAddress 72.XXX.XXX.XXX 下载 500000 字节 (50%)【问题讨论】:
-
您使用的是什么 Indy 版本?下载文件的 50% 代表什么?您是否要记录增量进度(例如,IPAddress 72.xxx.xxx.xxx 下载 100000 字节 (10%)、IPAddress 72.xxx.xxx.xxx 下载 150000 字节 (15%) 等)?
-
您的代码可以缩短:只需要
AResponseInfo.ContentStream := TFileStream.Create(...)。 Indy 配置并写入响应,并释放流。 -
@KenWhite
What Indy version are you using?10.6;What would downloading 50% of a file represent?客户端在下载量达到 50% 时关闭连接;