使用Delphi和Indy,使用Progress事件以编程方式从Internet下载文
发布时间:2020-12-15 10:05:24 所属栏目:大数据 来源:网络整理
导读:我需要一种使用Delphi通过HTTP从Internet下载文件的方法, 包括Progress事件,我正在寻找一种使用Indy组件的方法. 我使用的是Delphi 7. 提前致谢. 解决方法 我已经编写了这个例子,只用一个HTTP GET,与Indy 10,希望它与Indy 9一起工作: uses {...} IdHTTP,IdCo
我需要一种使用Delphi通过HTTP从Internet下载文件的方法,
包括Progress事件,我正在寻找一种使用Indy组件的方法. 我使用的是Delphi 7. 提前致谢. 解决方法
我已经编写了这个例子,只用一个HTTP GET,与Indy 10,希望它与Indy 9一起工作:
uses {...} IdHTTP,IdComponent; type TFormMain = class(TForm) {...} private {...} procedure HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); end; {...} procedure TFormMain.Button1Click(Sender: TObject); var Http: TIdHTTP; MS: TMemoryStream; begin Http := TIdHTTP.Create(nil); try MS := TMemoryStream.Create; try Http.OnWork:= HttpWork; Http.Get('http://live.sysinternals.com/ADExplorer.exe',MS); MS.SaveToFile('C:ADExplorer.exe'); finally MS.Free; end; finally Http.Free; end; end; procedure TFormMain.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); var Http: TIdHTTP; ContentLength: Int64; Percent: Integer; begin Http := TIdHTTP(ASender); ContentLength := Http.Response.ContentLength; if (Pos('chunked',LowerCase(Http.Response.TransferEncoding)) = 0) and (ContentLength > 0) then begin Percent := 100*AWorkCount div ContentLength; MemoOutput.Lines.Add(IntToStr(Percent)); end; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |