DELPHI TDownLoadURL下载网络文件

 

DELPHI TDownLoadURL下载网络文件

 

 

  1 unit Unit1;

  2 

  3 interface

  4 

  5 uses

  6   //引用   Vcl.ExtActns

  7   Vcl.ExtActns,

  8 

  9   System.SysUtils, System.Types, System.UITypes, System.Classes,

 10   System.Variants,

 11   FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,

 12   IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, FMX.Edit;

 13 

 14 type

 15   TForm1 = class(TForm)

 16     GroupBox1: TGroupBox;

 17     ProgressBar1: TProgressBar;

 18     Edit1: TEdit;

 19     GroupBox2: TGroupBox;

 20     Edit3: TEdit;

 21     Edit4: TEdit;

 22     Label1: TLabel;

 23     Label2: TLabel;

 24     Label3: TLabel;

 25     Button1: TButton;

 26     procedure Button1Click(Sender: TObject);

 27   private

 28     procedure URL_OnDownloadProgress(Sender: TDownLoadURL;

 29       Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus;

 30       StatusText: String; var Cancel: Boolean);

 31 

 32   public

 33     { Public declarations }

 34   end;

 35 

 36 var

 37   Form1: TForm1;

 38 

 39 implementation

 40 

 41 {$R *.fmx}

 42 var

 43   DownLoadURL1:TDownLoadURL;

 44 

 45 //url=网络文件  'http://helloroman.oicp.net:8000/test.rar';

 46 //Filename=保存到本地文件 'D:\Administrator\Desktop\123.rar';

 47 function DownLoadFile(url,Filename:string):boolean;

 48 var

 49   DownLoadURL1:TDownLoadURL;

 50 begin

 51     try

 52       DownLoadURL1:=TDownLoadURL.Create(Form1);

 53       DownLoadURL1.URL:= url;

 54       DownLoadURL1.Filename:= Filename;

 55       DownLoadURL1.OnDownloadProgress:=Form1.URL_OnDownloadProgress;

 56       DownLoadURL1.ExecuteTarget(nil);

 57       DownLoadURL1.Free;

 58       Result:=true;

 59     except

 60        Result:=false;

 61     end;

 62 end;

 63 

 64 

 65 procedure DownLoadThread;

 66 begin

 67   Form1.label3.Text:='0 kb / 0 kb';

 68 

 69   if DirectoryExists(ExtractFilePath(Form1.edit4.text)) then

 70   begin

 71        if not DownLoadFile(Form1.edit3.text,Form1.edit4.text) then

 72              Form1.GroupBox1.Text:='下载失败'

 73         else

 74            Form1.GroupBox1.Text:='下载完毕';

 75   end

 76   else

 77      SHowMessage(Form1.edit4.text + '不存在!');

 78 

 79 end;

 80 

 81 

 82 procedure TForm1.Button1Click(Sender: TObject);

 83 begin

 84      TThread.CreateAnonymousThread(DownLoadThread).Start;

 85 end;

 86 

 87 function BytesToStr(iBytes: Integer): String;

 88 var

 89   iKb: Integer;

 90 begin

 91   iKb := Round(iBytes / 1024);

 92   if iKb > 1000 then

 93     Result := Format('%.2f MB', [iKb / 1024])

 94   else

 95     Result := Format('%d KB', [iKb]);

 96 end;

 97 

 98 

 99 // 获取网络文件名

100 function GetUrlFileName(url:string):string;

101 var

102  str:string;

103 begin

104  url:=StringReplace(StrRScan(PChar(url),'/'), '/', '',[rfReplaceAll]);

105  if Pos('=',url) > 0 then

106     url:=StringReplace(StrRScan(PChar(url),'='), '=', '',[rfReplaceAll]);

107  Result:=url;

108 end;

109 

110 

111 

112 procedure TForm1.URL_OnDownloadProgress(Sender: TDownLoadURL;

113   Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus;

114   StatusText: String; var Cancel: Boolean);

115 begin

116 

117 

118   ProgressBar1.Max := ProgressMax div 100;

119   ProgressBar1.Value := Progress div 100;

120 

121 

122   Caption := StatusText;

123 

124   case StatusCode of

125     dsFindingResource:GroupBox1.Text:='查找资源...';

126     dsConnecting:GroupBox1.Text:='连接中...';

127     dsRedirecting:GroupBox1.Text:='';

128     dsBeginDownloadData:GroupBox1.Text:='准备下载文件...';

129     dsDownloadingData:GroupBox1.Text:='下载中...';

130 

131   end;

132 

133 

134   Edit1.Text:= Format('文件名:%s',[GetUrlFileName(Edit3.Text)]);

135   label3.Text := Format('%s / %s', [BytesToStr(Progress),BytesToStr(ProgressMax)]);

136 end;

137 

138 end.
View Code

 

 

你可能感兴趣的:(download)