• 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:AdministratorDesktop123.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
  • 相关阅读:
    py基础之模块与包
    py装饰器,生成器,迭代器
    py函数式编程
    py基础之列表生成式
    算法基础之递归算法
    Py基础之函数
    py基础之无序列表
    py基础之数据类型及基本语法
    jsp报错问题汇总
    mysql问题汇总
  • 原文地址:https://www.cnblogs.com/xe2011/p/3719454.html
Copyright © 2020-2023  润新知