Delphi10.2 关于Http 下载
2024-10-18 18:21:43
演示如图:
代码如下:
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.
最新文章
- 安装 pyopenssl c/_cffi_backend.c:15:17: 致命错误:ffi.h:
- 基本shell命令使用笔记
- pyqt4:在线程Qthread中使用定时器Qtimer
- MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象
- 【干货分享】Node.js 中文学习资料和教程导航
- Quality assessment and quality control of NGS data
- 无线端不响应键盘事件(keydown,keypress,keyup)
- http协议的总结说明
- MapReduce自定义类输出的内容为内存地址
- 数据挖掘十大经典算法(5) 最大期望(EM)算法
- windows server 2003 系统重装蓝屏
- oracle 转 mysql 最新有效法(转)
- bootstrap 表单+按钮+对话框
- MySQL 5.6 for Windows 解压缩版配置安装 和 MySQL 数据库的安装和密码的设定
- kubeflow 创建tensorflow过程
- c#中的模态对话框和非模态对话框
- 分布式知识点总结(来自CS-Notes)
- BZOJ5291 BJOI2018链上二次求和(线段树)
- SMGP3.0协议的概念知识
- angularJs的工具方法3
热门文章
- 微信小程序----wxss设置样式
- Vue-admin工作整理(二):项目结构个人配置
- 使用vue+iview实现上传文件及常用的下载文件的方法
- sql server 学习笔记 ( row_number, rank, dense_rank over partition by order by )
- Redis(四)-持久化
- idea 配置git
- ElasticSearch 6.2 Mapping参数说明及text类型字段聚合查询配置
- java中全角半角字符的相互转换的代码
- js的call和apply区别
- 【Java】【13】两个double类型比较大小