演示如图:

代码如下:

 unit Unit1;

 interface

 uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdComponent, Vcl.ComCtrls, Vcl.StdCtrls,
IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdTCPConnection, IdTCPClient,
IdHTTP; type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
IdHTTP1: TIdHTTP;
IdAntiFreeze1: TIdAntiFreeze;
Button1: TButton;
ProgressBar1: TProgressBar;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
//1. 字节数转换为KB或MB字符串
function BytesToStr(iBytes: Integer): String;
var
iKb: Integer;
begin
iKb := Round(iBytes / );
if iKb > then
Result := Format('%.2f MB', [iKb / ])
else
Result := Format('%d KB', [iKb]);
end; procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
ProgressBar1.Max := AWorkCountMax; // 获取要下载的文件大小
Label2.Caption := BytesToStr(AWorkCountMax);
Update;
end; procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
Label1.Caption := BytesToStr(aWorkCount); //更新进度
ProgressBar1.Position := aWorkCount; //更新进度条
Update;
end; 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; end.

最新文章

  1. 安装 pyopenssl c/_cffi_backend.c:15:17: 致命错误:ffi.h:
  2. 基本shell命令使用笔记
  3. pyqt4:在线程Qthread中使用定时器Qtimer
  4. MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象
  5. 【干货分享】Node.js 中文学习资料和教程导航
  6. Quality assessment and quality control of NGS data
  7. 无线端不响应键盘事件(keydown,keypress,keyup)
  8. http协议的总结说明
  9. MapReduce自定义类输出的内容为内存地址
  10. 数据挖掘十大经典算法(5) 最大期望(EM)算法
  11. windows server 2003 系统重装蓝屏
  12. oracle 转 mysql 最新有效法(转)
  13. bootstrap 表单+按钮+对话框
  14. MySQL 5.6 for Windows 解压缩版配置安装 和 MySQL 数据库的安装和密码的设定
  15. kubeflow 创建tensorflow过程
  16. c#中的模态对话框和非模态对话框
  17. 分布式知识点总结(来自CS-Notes)
  18. BZOJ5291 BJOI2018链上二次求和(线段树)
  19. SMGP3.0协议的概念知识
  20. angularJs的工具方法3

热门文章

  1. 微信小程序----wxss设置样式
  2. Vue-admin工作整理(二):项目结构个人配置
  3. 使用vue+iview实现上传文件及常用的下载文件的方法
  4. sql server 学习笔记 ( row_number, rank, dense_rank over partition by order by )
  5. Redis(四)-持久化
  6. idea 配置git
  7. ElasticSearch 6.2 Mapping参数说明及text类型字段聚合查询配置
  8. java中全角半角字符的相互转换的代码
  9. js的call和apply区别
  10. 【Java】【13】两个double类型比较大小