Delphi下载指定网址(URL)的文件,带进度条显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi下载指定网址(URL)的文件,带进度条显示相关的知识,希望对你有一定的参考价值。

Delphi下载指定网址(URL)的文件,带进度条显示

发布于: 2012-12-26 11:21:04   |  发布在: Delphi文章   |  点击:
626

主要使用的是Delphi自带的TIdhttp控件。
一、界面设置
在窗体上放置两个TEdit控件,一个用于输入要下载的文件URL,一个用于输入要保存到本地的文件路径;放置两个TLabel控件,一个显示文件总大小,一个显示当前已下载大小;放置一个按钮TButton,一个TIdhttp控件(在Indy Clients面板)和一个TIdAntiFreeze控件(放置该控件可避免下载过程中程序无响应,在Indy Misc面板)。
二、主要代码

//1. 字节数转换为KB或MB字符串 function BytesToStr(iBytes: Integer): String; var   iKb: Integer; begin   iKb := Round(iBytes / 1024);   if iKb > 1000 then     Result := Format(‘%.2f MB‘, [iKb / 1024])   else     Result := Format(‘%d KB‘, [iKb]); end;
//2.  Idhttp1控件的OnWorkBegin事件代码,用于获取文件总大小 procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;   const AWorkCountMax: Integer); begin   ProgressBar1.Max := aWorkCountMax;   Label2.Caption := BytesToStr(iWorkCountMax);   Update; end;
//3. Idhttp1控件的OnWork事件响应代码,用于更新文件下载进度 procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;   const AWorkCount: Integer); begin   Label1.Caption := BytesToStr(aWorkCount);   ProgressBar1.Position := aWorkCount;   Update; end;
//4. 按钮Button1的点击事件代码 procedure TForm1.Button1Click(Sender: TObject); var    tStream: TMemoryStream; begin   tStream := TMemoryStream.Create;   try     IdHTTP1.Get(Edit1.Text, tStream); //保存到内存流     tStream.SaveToFile(Edit2.Text); //保存为文件     ShowMessage(‘下载成功!‘);   except     ShowMessage(‘下载失败!‘);   end;   tStream.Free;   end;

以上代码在Delphi7编译环境下测试通过。

以上是关于Delphi下载指定网址(URL)的文件,带进度条显示的主要内容,如果未能解决你的问题,请参考以下文章

简洁大气带进度条的URL跳转页面HTML源码

如何定位文件中的指定的一个位置(delphi)?

使用java编写一个多线程下载器,需要在URL栏中输入网址,然后通过网址下载。该怎么实现,求源代码

应用程序 QT 崩溃(带进度条的 ftp 下载)

Python实现下载界面(带进度条,断点续传,多线程多任务下载等)

delphi 渐变颜色进度条 控件