我现在使用的是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;
使用这个IdHTTP1.Response.RawHeaders.Values['Content-Length']也没起到作用请指教了

解决方案 »

  1.   

    获取BUFFER的长度试试,手上没有INDY 10,只是建议。
      

  2.   

    哎。。delphi 2010 里面。。连ReadBuffer都没了。我很是郁闷疯
      

  3.   

    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');
      

  4.   

    多月之后,我也在郁闷中看到了这个贴,        fHttp.Request.Range :=IntToStr(L_FStream.Position) + '-';
     这是在外国找到的一段,应该对这个问题有帮助