zoukankan      html  css  js  c++  java
  • 用Delphi实现文件下载的几种方法(三种使用控件的方法)

    有个API就是UrlDownloadToFile。不仅如此,Delphi的一些控件也可以轻松实现下载,如NMHTTP,指定NMHTTP1.InputFileMode := ture; 指定Body为本地文件名,指定Get就可以下载了。

    uses UrlMon; 
    function DownloadFile(Source, Dest: string): Boolean; 
    begin 
      try 
        Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; 
        except 
          Result := False; 
        end; 
      end; 
      
      if DownloadFile(''http://www.borland.com/delphi6.zip, ''c:kylix.zip'') then 
    ShowMessage(''Download succesful'') 
    else ShowMessage(''Download unsuccesful'') 




    ======================== 
    例程: 



    Uses URLMon, ShellApi; 
    function DownloadFile(SourceFile, DestFile: string): Boolean; 
    begin 
    try 
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; 
    except 
    Result := False; 
    end; 
    end; 

    procedure TForm1.Button1.Click(Sender: TObject); 
    const 
    // URL Location 
    SourceFile := ''http://www.google.com/intl/de/images/home_title.gif''; 
    // Where to save the file 
    DestFile := ''c: empgoogle-image.gif''; 
    begin 
      if DownloadFile(SourceFile, DestFile) then 
      begin 
        ShowMessage(''Download succesful!''); 
        // Show downloaded image in your browser 
    ShellExecute(Application.Handle,PChar(''open''),PChar(DestFile),PChar(''''),nil,SW_NORMAL) 
      end 
      else 
      ShowMessage(''Error while downloading '' + SourceFile) 
    end; 




    ================= 

    加入如下代码: 



    NMHTTP1.InputFileMode := ture; 
    NMHTTP1.Body := ''本地文件名''; 
    NMHTTP1.Header := ''Head.txt''; 
    NMHTTP1.OutputFileMode := FALSE; 
    NMHTTP1.ReportLevel := Status_Basic; 
    NMHTTP1.Proxy := ''代理服务器的IP地址''; 
    NMHTTP1.ProxyPort := ''代理服务器的端口号''; 
    With NMHTTP1.HeaderInfo do 
      
      Begin 
        Cookie := ''''; 
        LocalMailAddress := ''''; 
        LocalProgram := ''''; 
        Referer := ''''; 
        UserID := ''用户名称''; 
        Password := ''用户口令''; 
        End; 
        
        NMHTTP1.Get(‘http://www.abcdefg.com/software/a.zip''); 




    试试吧,Delphi的目录中有TNMHTTP控件的例子。NT4+,Win95+,IE3+,你可以用URL Moniker的功能。 



    uses URLMon; 

    ... 

    OleCheck(URLDownloadToFile(nil,''URL'',''Filename'',0,nil)); 




    其中最后一个参数你还可以传入一个IBindStatusCallback的实现以跟踪下载进度或控制中止下载。简单的场合一句话就搞定了。 

    BTW, URL Moniker封装了大多数URL,而不是像NMHTTP那样封装协议,因此你可以用URLDownloadToFile下载HTTP,FTP甚至本地文件和局域网文件,还有其他的custom moniker,比如MSITSTORE(MSDN Library的文档moniker实现)。 




    var 
    DownLoadFile:TFileStream; 
    beginio 
    DownLoadFile:=TFileStream.Create(''c:aa.rar'',fmCreate); 
    IdHTTP1.Get(''http://www.sina.com.cn/download/aa.rar'',DownLoadFile); 
    DownLoadFile.Free; 
    end; 

    http://blog.csdn.net/zang141588761/article/details/51934072

  • 相关阅读:
    纪念--
    【csp模拟赛1】铁路网络 (network.cpp)
    【csp模拟赛1】不服来战 (challenge.cpp)
    【csp模拟赛1】T1 心有灵犀
    【luoguP3959 宝藏】-状压DP
    透彻网络流-wfx-最大流
    【luogu2668斗地主】模拟
    【hdu4734】F(x)-数位DP
    【8.27-模拟赛】remove
    清北学堂-济南游记
  • 原文地址:https://www.cnblogs.com/findumars/p/6711264.html
Copyright © 2011-2022 走看看