idhttp续传问题
procedure Tf_rardown.HttpDownLoad(aURL, aFile: string; bResume: Boolean);
var
mid_path :string;
Size:integer;
fs,ms: TMemoryStream;
tStream,tempStream: TFileStream;
begin //Http方式下载
IDHttp1.HandleRedirects := True;
IDHttp1.ReadTimeout := 60000;
mid_path:= ExtractFilepath(Application.ExeName)+'download\'+'mid.rar';
if FileExists(aFile) then //如果文件已经存在
begin
tStream := TFileStream.Create(aFile, fmOpenReadWrite);
end
else
begin
tStream := TFileStream.Create(aFile, fmCreate);
end;
try
if bResume then //续传方式
begin
tempStream:=TFileStream.Create(mid_path, fmCreate);
// tempStream.Seek(0,soFromEnd);
// tempStream.CopyFrom(tStream,tStream.size);
//tempStream.Free;
IdHTTP1.Head(aURL);
IdHTTP1.Request.ContentRangeStart := tStream.Size -1;
tStream.Position := tStream.Size - 1 ; //移动到最后继续下载
IdHTTP1.Request.ContentRangeEnd := IdHTTP1.Response.ContentLength ;
pro_num := tStream.Size ;
IdHTTP1.Get(aURL, tStream); //开始下载
// tStream.Free;
// tStream:= TFileStream.Create(aFile, fmOpenWrite);
// tempStream:= TFileStream.Create(mid_path,fmOpenRead);
// tStream.Seek(0,soFromEnd);
// tStream.CopyFrom(tempStream,tempStream.Size);
//Size:=tempStream.Size+SizeOf(Size);
//tStream.WriteBuffer(Size,SizeOf(Size));
//tempStream.Free;
end
else //覆盖或新建方式
begin
IdHTTP1.Request.ContentRangeStart := 0;
IdHTTP1.Get(aURL, tStream); //开始下载
end;
//showmessage('下载失败!');
finally
tStream.Free;
end;
end;
这是网上找的,下载一个rar文件,续传后后可以解压,但是里面老是丢失一部分内容