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文件,续传后后可以解压,但是里面老是丢失一部分内容
|
|