`
qzriso
  • 浏览: 242945 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

用Delphi实现文件下载的几种方法

阅读更多

笔者最近开发的系统中需要写一个下载文件的功能。以前用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;

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


程序结束

分享到:
评论

相关推荐

    delphi 真正实现实现pagecontrol多文档界面

    在Delphi编程环境中,PageControl组件是实现多文档界面(MDI, Multiple Document Interface)的一种常见方式。MDI允许在一个应用程序窗口内同时打开多个子窗口,每个子窗口(或称子文档)通常由一个单独的Form来表示...

    Delphi实现Word、PDF文档转Image

    在IT行业中,转换文档格式是一项常见的任务,尤其是在处理多种文件类型时。本项目涉及的是使用Delphi编程语言将Word和PDF文档转换为图像(JPG)格式。这在某些场景下非常有用,例如预览文档内容、制作网页或移动应用...

    delphi websocket 用socket实现

    标题“delphi websocket 用socket实现”表明我们将探讨如何在Delphi中通过Socket来创建WebSocket服务端或客户端。首先,我们需要了解基础的Socket编程概念。Socket是网络通信的基础,它提供了进程间的通信接口。在...

    用Delphi实现多语言界面

    总结,实现Delphi的多语言界面涉及以下几个步骤:创建和管理资源文件、设计动态加载资源的机制、处理日期和数字格式的本地化,以及构建多语言安装包。通过熟练掌握这些技术,你可以开发出适应全球用户需求的应用程序...

    用Delphi实现百度下拉框例子(下拉内容来至数据库)

    在本文中,我们将深入探讨如何使用Delphi编程语言来实现一个功能,即“百度下拉框例子”,其中下拉内容是从数据库动态加载的。这个示例项目包含完整的源代码,可直接运行查看效果。 首先,Delphi是一款强大的...

    Delphi 几种常见的Dll调用方法l

    下面将详细阐述Delphi7中调用DLL的几种常见方法。 1. **LoadLibrary 和 FreeLibrary** - `LoadLibrary` 是 Windows API 中的一个函数,用于加载指定的 DLL 文件,并返回一个句柄,表示 DLL 在进程中的实例。 - `...

    DELPHI开发的多线程HTTP下载

    通过继承 TThread,我们可以自定义线程的行为,例如在 Run 方法中实现下载逻辑。每个线程负责下载文件的一个部分,这样可以实现并行下载。 2. **TIdHTTP 组件**:这是 Indy(Internet Direct)库中的一个组件,用于...

    Delphi实现的WebSocket服务端

    总的来说,通过Delphi实现的WebSocket服务端,你可以学习到如何利用Delphi的网络编程接口来实现一个实时通信系统,这不仅加深了对WebSocket协议的理解,也为构建其他基于TCP/IP的网络应用奠定了基础。

    Delphi流文件操作

    Delphi流文件操作 Delphi流文件操作是指在Delphi开发环境中对数据流的各种操作,如写入、读取、合并、分隔等。流是一种抽象的处理数据的工具,定义了一些处理数据的基本操作,如读取数据、写入数据等。程序员只需...

    delphi 实现的UVC 摄像头

    从压缩包中的 "摄像头" 文件名来看,这可能是源代码文件夹,其中可能包含了实现这些功能的Delphi源代码文件、工程文件或相关文档。在这些文件中,我们可以期待找到以下几个关键知识点: 1. **USB设备通信**:Delphi...

    Delphi实现的宽带拨号方法,换IP

    标题中的“Delphi实现的宽带拨号方法,换IP”是指使用Delphi编程语言来创建一个应用程序,该程序能够执行宽带连接的拨号操作,并在完成拨号后改变计算机的公网IP地址。这一功能通常被网络测试、数据分析或网络安全...

    Delphi实现脚本引擎

    最后,压缩包中的文件"20063122019402"可能包含了实现这个脚本引擎的源代码、文档或其他相关资源。通过分析和学习这些材料,开发者可以深入理解如何在Delphi环境下构建和优化脚本引擎。 总之,Delphi实现脚本引擎是...

    delphi 实现pagecontrol多文档界面

    总的来说,Delphi通过PageControl和RZPageControl为开发者提供了一种高效的方法来实现多文档界面,这使得用户可以在一个窗口中方便地管理和操作多个独立的工作区,提高了软件的用户体验。通过不断学习和实践,开发者...

    delphi7使用IXMLHTTPRequest实现RESTful的访问及返回json数据的解析

    综上所述,这个项目展示了一种在Delphi 7中使用IXMLHTTPRequest访问RESTful API、解析JSON响应并利用HMACSHA1进行安全通信的方法。开发者可以通过这样的示例学习如何在旧版的Delphi环境中进行现代Web服务的交互。

    文件捆绑,Delphi实例实现..rar

    本实例聚焦于使用Delphi这一强大的面向对象的Pascal编程语言来实现文件捆绑功能。 Delphi,由Embarcadero Technologies开发,是一款集成开发环境(IDE),它提供了丰富的控件库、高效的编译器以及面向对象的编程...

    Delphi实现MD5加密

    在Delphi编程环境中,实现MD5加密通常涉及到以下几个关键知识点: 1. **MD5算法原理**:MD5算法由Ronald Rivest在1991年提出,它将输入数据分为多个块处理,通过一系列复杂的数学运算(如位移、异或、加法等)和...

    delphi 两种气泡实现方式

    本教程将深入探讨两种不同的方法来实现Delphi中的气泡提示功能。 方法一:使用THintComponent 1. 首先,从Component Palette面板中找到`THintComponent`,将其拖放到你的表单(Form)上。这个组件默认是隐藏的,但...

    delphi_实现可执行文件之源码解析

    ### Delphi实现可执行文件之源码解析:深入理解EXE构建机制 #### 概述 在探讨Delphi如何实现可执行文件(EXE)的过程中,我们首先需要明确Delphi是一种能够生成各种32位Windows可执行文件类型的编程语言,包括常见...

    xml.rar_delphi 文件下载_delphi文件操作

    Delphi提供了几种生成XML的方法: - **手动创建**:通过TXMLDocument组件,创建并添加节点,设置属性等。 - **使用XML数据绑定**:通过TXMLDataBinding或TXMLTypeComponent,基于数据结构自动生成XML。 - **使用...

    T9 输入法 Delphi实现 Demo

    本Demo是用Delphi实现的T9输入法,虽然描述中提到代码来源于网络,但我们可以从中学习到如何在Delphi环境下创建这样的输入系统。首先,我们需要理解T9输入法的核心算法,这个算法主要涉及以下几个方面: 1. **键位...

Global site tag (gtag.js) - Google Analytics