笔者最近开发的系统中需要写一个下载文件的功能。以前用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组件是实现多文档界面(MDI, Multiple Document Interface)的一种常见方式。MDI允许在一个应用程序窗口内同时打开多个子窗口,每个子窗口(或称子文档)通常由一个单独的Form来表示...
在IT行业中,转换文档格式是一项常见的任务,尤其是在处理多种文件类型时。本项目涉及的是使用Delphi编程语言将Word和PDF文档转换为图像(JPG)格式。这在某些场景下非常有用,例如预览文档内容、制作网页或移动应用...
标题“delphi websocket 用socket实现”表明我们将探讨如何在Delphi中通过Socket来创建WebSocket服务端或客户端。首先,我们需要了解基础的Socket编程概念。Socket是网络通信的基础,它提供了进程间的通信接口。在...
总结,实现Delphi的多语言界面涉及以下几个步骤:创建和管理资源文件、设计动态加载资源的机制、处理日期和数字格式的本地化,以及构建多语言安装包。通过熟练掌握这些技术,你可以开发出适应全球用户需求的应用程序...
在本文中,我们将深入探讨如何使用Delphi编程语言来实现一个功能,即“百度下拉框例子”,其中下拉内容是从数据库动态加载的。这个示例项目包含完整的源代码,可直接运行查看效果。 首先,Delphi是一款强大的...
下面将详细阐述Delphi7中调用DLL的几种常见方法。 1. **LoadLibrary 和 FreeLibrary** - `LoadLibrary` 是 Windows API 中的一个函数,用于加载指定的 DLL 文件,并返回一个句柄,表示 DLL 在进程中的实例。 - `...
通过继承 TThread,我们可以自定义线程的行为,例如在 Run 方法中实现下载逻辑。每个线程负责下载文件的一个部分,这样可以实现并行下载。 2. **TIdHTTP 组件**:这是 Indy(Internet Direct)库中的一个组件,用于...
总的来说,通过Delphi实现的WebSocket服务端,你可以学习到如何利用Delphi的网络编程接口来实现一个实时通信系统,这不仅加深了对WebSocket协议的理解,也为构建其他基于TCP/IP的网络应用奠定了基础。
Delphi流文件操作 Delphi流文件操作是指在Delphi开发环境中对数据流的各种操作,如写入、读取、合并、分隔等。流是一种抽象的处理数据的工具,定义了一些处理数据的基本操作,如读取数据、写入数据等。程序员只需...
从压缩包中的 "摄像头" 文件名来看,这可能是源代码文件夹,其中可能包含了实现这些功能的Delphi源代码文件、工程文件或相关文档。在这些文件中,我们可以期待找到以下几个关键知识点: 1. **USB设备通信**:Delphi...
标题中的“Delphi实现的宽带拨号方法,换IP”是指使用Delphi编程语言来创建一个应用程序,该程序能够执行宽带连接的拨号操作,并在完成拨号后改变计算机的公网IP地址。这一功能通常被网络测试、数据分析或网络安全...
最后,压缩包中的文件"20063122019402"可能包含了实现这个脚本引擎的源代码、文档或其他相关资源。通过分析和学习这些材料,开发者可以深入理解如何在Delphi环境下构建和优化脚本引擎。 总之,Delphi实现脚本引擎是...
总的来说,Delphi通过PageControl和RZPageControl为开发者提供了一种高效的方法来实现多文档界面,这使得用户可以在一个窗口中方便地管理和操作多个独立的工作区,提高了软件的用户体验。通过不断学习和实践,开发者...
综上所述,这个项目展示了一种在Delphi 7中使用IXMLHTTPRequest访问RESTful API、解析JSON响应并利用HMACSHA1进行安全通信的方法。开发者可以通过这样的示例学习如何在旧版的Delphi环境中进行现代Web服务的交互。
本实例聚焦于使用Delphi这一强大的面向对象的Pascal编程语言来实现文件捆绑功能。 Delphi,由Embarcadero Technologies开发,是一款集成开发环境(IDE),它提供了丰富的控件库、高效的编译器以及面向对象的编程...
在Delphi编程环境中,实现MD5加密通常涉及到以下几个关键知识点: 1. **MD5算法原理**:MD5算法由Ronald Rivest在1991年提出,它将输入数据分为多个块处理,通过一系列复杂的数学运算(如位移、异或、加法等)和...
本教程将深入探讨两种不同的方法来实现Delphi中的气泡提示功能。 方法一:使用THintComponent 1. 首先,从Component Palette面板中找到`THintComponent`,将其拖放到你的表单(Form)上。这个组件默认是隐藏的,但...
### Delphi实现可执行文件之源码解析:深入理解EXE构建机制 #### 概述 在探讨Delphi如何实现可执行文件(EXE)的过程中,我们首先需要明确Delphi是一种能够生成各种32位Windows可执行文件类型的编程语言,包括常见...
Delphi提供了几种生成XML的方法: - **手动创建**:通过TXMLDocument组件,创建并添加节点,设置属性等。 - **使用XML数据绑定**:通过TXMLDataBinding或TXMLTypeComponent,基于数据结构自动生成XML。 - **使用...
本Demo是用Delphi实现的T9输入法,虽然描述中提到代码来源于网络,但我们可以从中学习到如何在Delphi环境下创建这样的输入系统。首先,我们需要理解T9输入法的核心算法,这个算法主要涉及以下几个方面: 1. **键位...