关于idHttp.Response.ContentLength长度问题

zydmango 2010-05-14 10:37:08
我现在使用的是indy10版本。现在我是做一个用线程进行分段下载的功能,为每个线程分配指定的下载长度,但是期间就发现这个问题idHttp.Response.ContentLength的长度一直只下载文件的总长度。在delphi7 里面我用相同的代码是可以做到的,但是现在我使用delphi 2010 indy10这个版本一直没有解决。请各位指教。代码如下
都是在线程中:

procedure TThreadDownLoad.Execute;
var
FidHTTP:TIdHttp;
begin
FidHTTP:=TIdHttp.Create(nil);

with FidHTTP do begin
OnWorkBegin :=IdHTTPWorkBegin;
OnWork :=IdHTTPWork;
OnWorkEnd :=IdHTTPWorkEnd;
OnStatus :=IdHTTPStatus;
end;

FidHTTP.Request.ContentRangeStart:=SegmentStart;//这个地方就是我指定从多少字节开始下载
FidHTTP.Request.ContentRangeEnd :=SegmentEnd;//这个地方就是我指定下载多少字节
FidHTTP.Head(URL);

Cardinal (FidHTTP.Response.ContentLength);问题就出在这里。。

获取的长度为下载文件的总长。而不是SegmentStart--SegmentEnd长度。。
end;


请指教了。。。。。。
...全文
454 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hunter103 2010-05-14
  • 打赏
  • 举报
回复
IdHTTP1.Response.RawHeaders.Values['Content-Length']
zydmango 2010-05-14
  • 打赏
  • 举报
回复
谢谢哥子啊。。但是我试了。。还是一样的
hunter103 2010-05-14
  • 打赏
  • 举报
回复
分两次来就可以读出文件的大小。。。
第一次想不要设置ContentRangeStart...
IdHTTP1.Head('http://ftp-idc.pconline.com.cn/pub/download/201003/flashplayer10_1_rc2_activex_041910.exe');
ShowMessage(IntToStr(IdHTTP1.Response.ContentLength));

IdHTTP1.Disconnect;
IdHTTP1.Request.ContentRangeStart:=1024;//这个地方就是我指定从多少字节开始下载
IdHTTP1.Request.ContentRangeEnd :=1024*10;//这个地方就是我指定下载多少字节
IdHTTP1.Head('http://ftp-idc.pconline.com.cn/pub/download/201003/flashplayer10_1_rc2_activex_041910.exe');


zydmango 2010-05-14
  • 打赏
  • 举报
回复
大哥一样的啊

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧