加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 10:02:14 所属栏目:大数据 来源:网络整理
导读:主要使用的是Delphi自带的TIdhttp控件。 一、界面设置 在窗体上放置两个TEdit控件,一个用于输入要下载的文件URL,一个用于输入要保存到本地的文件路径;放置两个TLabel控件,一个显示文件总大小,一个显示当前已下载大小;放置一个按钮TButton,一个TIdhttp

主要使用的是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编译环境下测试通过。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读