奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> Delphi >> 用Delphi实现文件下载的几种方法
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • Delphi实现网页表单数

  • 用Delphi开发Web服务数

  • Delphi中利用钩子实现

  • 一个判断定文件是否为

  • 把Flash文件转换为Exe

  • Delphi中保存图像列表

  • 基于Delphi的接口编程

  • 在Delphi中使用Create

  • 用Delphi实现文件下载的几种方法
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

    我的主页: http://www.tommstudio.com/

    笔者最近开发的系统中需要写一个下载文件的功能。以前用BCB调用API写的很烦琐,忽然想起有一个API就可以搞定了,于是一大早就来搜索。这个API就是UrlDownloadToFile。不仅如此,Delphi的一些控件也可以轻松实现下载,如NMHTTP,指定NMHTTP1.InputFileMode := ture; 指定Body为本地文件名,指定Get就可以下载了。下面是详细代码,均出自CSDN。我把它们都整理到这儿,让大家方便查阅。


    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:\temp\google-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;

    //---------------------------




    程序结束

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.