ICS组件包中的HttpCli1如何断点下载 它的Demo中没有断点下载,我用ContentRangeBegin属性怎么不起作用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还需要设置ContentRangeEnd,''表示全部,ContentRangeEnd:=200表示到200结束,如果你不设置ContentRangeEnd默认全部所以不起作用 ContentRangeBegin,ContentRangeEnd以字节为单位 我这样做的为什么不行呢 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; 你将ContentRangeEnd设置成你的文件大小,还断点续传什么了 ContentRangeBegin:=1;ContentRangeEnd:=200表示到200结束不是下载从第一个字节到第200个字节吗? HttpCli1.ContentRangeBegin:=1;HttpCli1.ContentRangeEnd:=100;传输块的大小是1-100 朋友,可能是我对于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);麻烦失踪的月亮了,谢谢 RcvdStream.Size是流的大小,你应该控制RcvdStream.Position 是的,我发现了,然后改成了这样写 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);但是最后下载完后发现总是少写一个字节 错了,上面这段代码,在断点下载的时候,并没有按照ContentRangeEnd的停止HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size+1);会少一个字节 在多次断点续传的时候,为什么获得的数据都不一样呢ContentRangeBegin:0 ContentRangeEnd:296030726ContentRangeBegin:19988480 ContentRangeEnd:296030726ContentRangeBegin:70844416 ContentRangeEnd:276042246ContentRangeBegin:117440512 ContentRangeEnd:205197831ContentRangeBegin:166789120 ContentRangeEnd:87757320ContentRangeBegin:333709312 ContentRangeEnd:296030726 代码是这样的 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; 还有就是为什么这个程序能下载扩展名为txt pdf 的,我只试了这两个,而rmvb的却下不了呢,提示not found Delphi 多线程的问题 如何 在delphi ShellListView控件中弹出系统右键菜单? 各位大哥~~求救~~关于软件权限设置的问题 在Delphi中如何编程来设置计算机名? 新手:关于TClientSocket. 谢谢! 关于fastreport参数传递问题,急!急!急!在线等待... 控件怎么卸载掉,要卸干净??????????????????立即结账 初学提问:请问怎样得到指定字符串在另一个字符串的位置? 如何拦截桌面刷新? 急急……………………………………………………20 cxGrid子表单全部展开 ADO读取Excel数据的问题
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;
ContentRangeEnd:=200表示到200结束不是下载从第一个字节到第200个字节吗?
HttpCli1.ContentRangeEnd:=100;传输块的大小是1-100
那我要续传的话,就肯定要从第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);麻烦失踪的月亮了,谢谢
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);但是最后下载完后发现总是少写一个字节
HttpCli1.ContentRangeBegin:=IntToStr(HttpCli1.RcvdStream.Size+1);会少一个字节
ContentRangeBegin:0 ContentRangeEnd:296030726
ContentRangeBegin:19988480 ContentRangeEnd:296030726
ContentRangeBegin:70844416 ContentRangeEnd:276042246
ContentRangeBegin:117440512 ContentRangeEnd:205197831
ContentRangeBegin:166789120 ContentRangeEnd:87757320
ContentRangeBegin:333709312 ContentRangeEnd:296030726
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;