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


本文整理自网络,侵删。

 主要使用的是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 10 seattle中的画布上绘制字符

Delphi 反外挂,反破解思想代码

Delphi fdmemtable内存表操作

Delphi中的各种文件类型介绍

封装Delphi hook api

Delphi 系统长文件名与dos形式短文件名的相互转换

Delphi获取开机时间代码

Delphi取得当前目录的上一级目录

Delphi如何粘贴html格式文本到windows剪切板

Delphi 软关闭显示器的代码

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...