Delphi:下载升级文件的方法,采用HTTPS协议
😀 在windows的应用开发中,文件升级是必须要有的。在升级中需要自动下载升级文件。这里采用线程的方式下载升级文件到指定的文件夹中。
1.创建线程,方便主程序调用
unit DownloadThread;
interface
uses
System.Classes, System.Net.HttpClient, System.Net.URLClient, System.Net.HttpClientComponent;
type
TDownloadThread = class(TThread)
private
FURL: string;
FSavePath: string;
FOnComplete: TNotifyEvent;
procedure DoComplete;
protected
procedure Execute; override;
public
constructor Create(const AURL, ASavePath: string; AOnComplete: TNotifyEvent);
property OnComplete: TNotifyEvent read FOnComplete write FOnComplete;
end;
implementation
{ TDownloadThread }
constructor TDownloadThread.Create(const AURL, ASavePath: string; AOnComplete: TNotifyEvent);
begin
inherited Create(False);
FURL := AURL;
FSavePath := ASavePath;
FOnComplete := AOnComplete;
end;
procedure TDownloadThread.DoComplete;
begin
if Assigned(FOnComplete) then
FOnComplete(Self);
end;
procedure TDownloadThread.Execute;
var
HttpClient: THTTPClient;
FileStream: TFileStream;
Response: IHTTPResponse;
begin
try
HttpClient := THTTPClient.Create;
try
FileStream := TFileStream.Create(FSavePath, fmCreate);
try
Response := HttpClient.Get(FURL);
if Response.StatusCode = 200 then
begin
FileStream.CopyFrom(Response.ContentStream, Response.ContentStream.Size);
end;
finally
FileStream.Free;
end;
finally
HttpClient.Free;
end;
except
end;
Synchronize(DoComplete);
end;
end.
2.在主界面进行调用即可,代码如下:
URL:='https://xxxxxx.com/ShareFolderProject.exe' ;
DestFilePath:=IncludeTrailingPathDelimiter(exeDir+'tmp') + 'setup.exe';
DownloadThread := TDownloadThread.Create( URL,DestFilePath, DownloadComplete);
回调函数:
procedure TMainForm.DownloadComplete(Sender: TObject);
begin
ShowMessage('文件下载完成!');
end;
这样就可以自动下载升级文件了。




留言
邮箱不会公开,留言经审核后显示。
还没有留言,来做第一个吧。