它的Demo中没有断点下载,我用ContentRangeBegin属性怎么不起作用

解决方案 »

  1.   

    还需要设置ContentRangeEnd,''表示全部,ContentRangeEnd:=200表示到200结束,如果你不设置ContentRangeEnd默认全部所以不起作用
      

  2.   

    ContentRangeBegin,ContentRangeEnd以字节为单位
      

  3.   

    我这样做的为什么不行呢
        HttpCli1.URL        := URLEdit.Text;
        HttpCli1.Proxy      := ProxyHostEdit.Text;
        HttpCli1.ProxyPort  := ProxyPortEdit.Text;
        if not FileExists(FileNameEdit.Text) then
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmCreate)
        else
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmOpenWrite);
        HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size);
        HttpCli1.ContentRangeEnd:='296030726';//这个是我的文件大小,字节数
        GetButton.Enabled   := FALSE;
        AbortButton.Enabled := TRUE;
        InfoLabel.Caption   := 'Loading';
        try
            try
                HttpCli1.Get;
                InfoLabel.Caption := 'Received ' +
                                     IntToStr(HttpCli1.RcvdStream.Size) + ' bytes';
            except
                on E: EHttpException do begin
                    InfoLabel.Caption := 'Failed : ' +
                                         IntToStr(HttpCli1.StatusCode) + ' ' +
                                         HttpCli1.ReasonPhrase;;
                end
                else
                    raise;
            end;
        finally
            GetButton.Enabled   := TRUE;
            AbortButton.Enabled := FALSE;
            HttpCli1.RcvdStream.Destroy;
            HttpCli1.RcvdStream := nil;
        end;
      

  4.   

    你将ContentRangeEnd设置成你的文件大小,还断点续传什么了
      

  5.   

    ContentRangeBegin:=1;
    ContentRangeEnd:=200表示到200结束不是下载从第一个字节到第200个字节吗?
      

  6.   

    HttpCli1.ContentRangeBegin:=1;
    HttpCli1.ContentRangeEnd:=100;传输块的大小是1-100
      

  7.   

    朋友,可能是我对于ContentRangeBegin,ContentRangeEnd理解的有偏差,我的理解是比如我已经从服务器上下载了100K,
    那我要续传的话,就肯定要从第101字节开始,如果我的文件大小为2000字节,那ContentRangBegin就要为101,那么ContentRangEnd要为多少或者我想要每次只下载200字节,那下面这样写好像也不对
        if not FileExists(FileNameEdit.Text) then
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmCreate)
        else
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmOpenWrite);
        HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size);
        HttpCli1.ContentRangeEnd:=IntToStr(HttpCli1.RcvdStream.Size+200);麻烦失踪的月亮了,谢谢
      

  8.   

    RcvdStream.Size是流的大小,你应该控制RcvdStream.Position 
      

  9.   

    是的,我发现了,然后改成了这样写
        if not FileExists(FileNameEdit.Text) then
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmCreate)
        else
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmOpenWrite);
        HttpCli1.RcvdStream.Seek(0,soFromEnd);
        HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size);
        HttpCli1.ContentRangeEnd:=IntToStr(HttpCli1.ContentLength);但是最后下载完后发现总是少写一个字节
      

  10.   

    错了,上面这段代码,在断点下载的时候,并没有按照ContentRangeEnd的停止
    HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size+1);会少一个字节 
      

  11.   

    在多次断点续传的时候,为什么获得的数据都不一样呢
    ContentRangeBegin:0     ContentRangeEnd:296030726
    ContentRangeBegin:19988480     ContentRangeEnd:296030726
    ContentRangeBegin:70844416     ContentRangeEnd:276042246
    ContentRangeBegin:117440512     ContentRangeEnd:205197831
    ContentRangeBegin:166789120     ContentRangeEnd:87757320
    ContentRangeBegin:333709312     ContentRangeEnd:296030726
      

  12.   

    代码是这样的
        if not FileExists(FileNameEdit.Text) then
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmCreate)
        else
           HttpCli1.RcvdStream := TFileStream.Create(FileNameEdit.Text, fmOpenWrite);
        HttpCli1.RcvdStream.Seek(0,soFromEnd);
        HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size);
        HttpCli1.ContentRangeEnd:=IntToStr(HttpCli1.ContentLength);
        Memo1.Lines.Add('ContentRangeBegin:'+HttpCli1.ContentRangeBegin+'     '+'ContentRangeEnd:'+HttpCli1.ContentRangeEnd);
        GetButton.Enabled   := FALSE;
        AbortButton.Enabled := TRUE;
      

  13.   

    还有就是为什么这个程序能下载扩展名为txt pdf 的,我只试了这两个,而rmvb的却下不了呢,提示not found