演示如图:

代码如下:

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdComponent, Vcl.ComCtrls, Vcl.StdCtrls,
  8. IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdTCPConnection, IdTCPClient,
  9. IdHTTP;
  10.  
  11. type
  12. TForm1 = class(TForm)
  13. Label1: TLabel;
  14. Label2: TLabel;
  15. Edit1: TEdit;
  16. Edit2: TEdit;
  17. IdHTTP1: TIdHTTP;
  18. IdAntiFreeze1: TIdAntiFreeze;
  19. Button1: TButton;
  20. ProgressBar1: TProgressBar;
  21. Label3: TLabel;
  22. Label4: TLabel;
  23. Label5: TLabel;
  24. Label6: TLabel;
  25. procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  26. AWorkCountMax: Int64);
  27. procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  28. AWorkCount: Int64);
  29. procedure Button1Click(Sender: TObject);
  30. private
  31. { Private declarations }
  32. public
  33. { Public declarations }
  34. end;
  35.  
  36. var
  37. Form1: TForm1;
  38.  
  39. implementation
  40.  
  41. {$R *.dfm}
  42. //1. 字节数转换为KB或MB字符串
  43. function BytesToStr(iBytes: Integer): String;
  44. var
  45. iKb: Integer;
  46. begin
  47. iKb := Round(iBytes / );
  48. if iKb > then
  49. Result := Format('%.2f MB', [iKb / ])
  50. else
  51. Result := Format('%d KB', [iKb]);
  52. end;
  53.  
  54. procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  55. AWorkCountMax: Int64);
  56. begin
  57. ProgressBar1.Max := AWorkCountMax; // 获取要下载的文件大小
  58. Label2.Caption := BytesToStr(AWorkCountMax);
  59. Update;
  60. end;
  61.  
  62. procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  63. AWorkCount: Int64);
  64. begin
  65. Label1.Caption := BytesToStr(aWorkCount); //更新进度
  66. ProgressBar1.Position := aWorkCount; //更新进度条
  67. Update;
  68. end;
  69.  
  70. procedure TForm1.Button1Click(Sender: TObject);
  71.  
  72. var
  73. tStream: TMemoryStream;
  74. begin
  75. tStream := TMemoryStream.Create;
  76. try
  77. IdHTTP1.Get(Edit1.Text, tStream); //保存到内存流 (下载链接)
  78. tStream.SaveToFile(Edit2.Text); //保存为文件 (路径)
  79. ShowMessage('下载成功!');
  80. except
  81. ShowMessage('下载失败!');
  82. end;
  83. tStream.Free;
  84.  
  85. end;
  86.  
  87. end.

Delphi10.2 关于Http 下载的更多相关文章

  1. 二、Delphi10.3在不下载文件情况下读取网站文件大小等信息

    一.上源码 uses TxHttp, Classes, TxCommon, Frm_WebTool, SysUtils; var m_Url: string; m_Http: TTxHttp; m_P ...

  2. Delphi10.2.3利用THttpClient实现http异步下载

    随着Delphi 10.2.3的发布,随之带来更稳定.更完善的版本.今天借官方的例子,解读一下如何实现Http异步下载并显示下载进度. 使用的核心组件是THttpClient,首先建立一个THttpC ...

  3. Delphi10.2 Tokyo试用(1)

    最近下载了Delphi10.2 Tokyo,试用了一下,感觉不错,尤其是针对Linux的开发,总算出来了,可以考虑把原来服务器重新编译成RedHat上使用了,免得客户一天到晚喊Windows不安全,要 ...

  4. unigui1404在delphi10.2.2安装

    unigui1404在delphi10.2.2安装 UNIGUI1404不能直接在DELPHI10.2.2下面编译安装,在10.2.1下面是可以的. 这里讲下怎样安装的方法: 1)执行FMSoft_u ...

  5. Delphi10.2安装过程详解

    下载好的Delphi10.2是iso镜像,使用虚拟光驱,快速装载后,提示安装   运行setup.exe安装程序,选择安装语言——点击OK,最好关闭网络和退出其他软件   勾选同意条款,点击next ...

  6. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  7. ASP.NET Aries 入门开发教程1:框架下载与运行

    背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/A ...

  8. WinForm 天猫2013双11自动抢红包【源码下载】

    1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...

  9. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

随机推荐

  1. Linux环境——MySQL安装及配置(5.7版本)

    数据库安装包下载地址:https://dev.mysql.com/downloads/mysql/ 我的环境是Linux  Red Hat Enterprlse Linux (64位),本次安装的是M ...

  2. 记 Arduino 之 Hello World 篇(Getting Started)

    本文仅为入门实验,甚至谈不上研究的程度.目的是:记录如何烧录程序到 Arduino 主板,以及通过一些简单例程,找到 Arduino 开发的感觉. 开发环境:Ardunio IDE(用于编译.上传运行 ...

  3. 哆啦A梦css

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 2.1 maven配置多镜像地址

    背景: 自己在平时写项目用的是阿里的镜像地址,而在开发公司的项目是用的是公司提供的镜像地址,这就导致了每次使用的时候 都需要来回的修改maven的settings.xml文件,这样很容易出错,而且还浪 ...

  5. C++_day06_运算符重载_智能指针

    1.只有函数运算符可以带缺省函数,其他运算符函数主要由操作符个数确定 2.解引用运算符和指针运算符 示例代码: #include <iostream> using namespace st ...

  6. vue项目知识点总结

    一.vue中如何获取select被选中的id和对应的值. <!-- 下拉框 --> <div v-show="moreStore" class="sel ...

  7. VS2017 MVC Spring net 环境配置

    首先打开管理NuGet程序包. 搜索 "spring web",安装Spring.Web,Spring.Web.Mvc5,Spring.Web.Extensions, 搜索Micr ...

  8. SpringBoot之AOP

    AOP:面向切面编程,相当于OOP面向对象编程. Spring的AOP的存在目的是为了解耦,AOP可以让一组类共享相同的行为. Spring支持AspectJ的注解切面编程: (1)使用@Aspect ...

  9. python中OS模块方法

    常见函数: os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.ge ...

  10. js 取整 取余

    1.取整//保留整数部分parseInt(3/2) // 1 2.向上取整// 向上取整,有小数就整数部分加1Math.ceil(3/2) // 2 3.四舍五入// 四舍五入Math.round(3 ...