急!谁能实现文件下载的功能啊,必须使用Http方式,FTP方式不考虑(100分)

  • 主题发起人 主题发起人 独孤剑
  • 开始时间 开始时间

独孤剑

Unregistered / Unconfirmed
GUEST, unregistred user!
我在网上搜了很多回,没有找到满意的控件,不知道Delphi原本自带的控件是否能够实现
具体要求就是我提供一个文件下载地址(url),能够通过Http方式将它下载到本地
当然最好能够用显示下载的进度
可以实现的话立马给分,急,在这里先行谢过了!
 
URLDownloadToFile最简单,不过不好做进度条;
也可以用InternetOpen、InternetOpenUrl和InternetReadFile来做,
这种方法很容易做进度条。
 
WEBFILEI.ZIP
http://www.vclxx.org/DELPHI/D32FREE/WEBFILEI.ZIP
TWebFileInfo 构件可以帮助您得知某个 Web 站台内某个文件内容是否被更新,倘若被更新可以利用 HTTP 通讯协议自动下载该文件的构件 ( 0.81 版,附源码 ),作者 : Jon M. Robertson。
 
直接采用Delphi自带的控件的INDY组件为例.新建一个工程,放上一个TIdHTTP控件,一个TIdAntiFreeze控件,一个TProgressBar用于显示下载进度.最后放上一个TButton用于开始执行我们的命令.代码如下:

procedure TForm1.Button1Click(Sender: TObject);//点击按钮的时候开始下载我们的文件
var
MyStream:TMemoryStream;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应.
MyStream:=TMemoryStream.Create;
try
IdHTTP1.Get('http://www.138soft.com/download/Mp3ToExe.zip',MyStream);//下载我站点的一个ZIP文件
except//INDY控件一般要使用这种try..except结构.
Showmessage('网络出错!');
MyStream.Free;
Exit;
end;
MyStream.SaveToFile('c:/Mp3ToExe.zip');
MyStream.Free;
Showmessage('OK');
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);//开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.
begin
ProgressBar1.Max:=AWorkCountMax;
ProgressBar1.Min:=0;
ProgressBar1.Position:=0;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);//接收数据的时候,进度将在ProgressBar1显示出来.
begin
ProgressBar1.Position:=ProgressBar1.Position+AWorkCount;
end;


  IdHTTP1的Get还有一种形式就是获取字符串:例如,上面的程序可以改写成:

procedure TForm1.Button1Click(Sender: TObject);
var
MyStr:String;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应.
try
MyStr:=IdHTTP1.Get('http://www.138soft.com/default.htm');
except
Showmessage('网络出错!');
Exit;
end;
Showmessage(MyStr);
end;
 
INDY就可以嘛,我做了好几个程序都是用自带的控件,从NMHTTP到INDY的全用过,仔细看示例文件...
 
NMhttp就可以啊。。。
 
你到WWW.PLAYICQ.COM上找,有自动升级的例子,就是用THHP的,
 
Indy的IDhttp, demo里有,快去看看吧
 
其实当问题发出去之后,我就用indy中的idHttp控件试过了,发现完全能实现自己的所有要求,都怪自己浪费了好多时间,却不知道从Delphi中找找答案!
不过,分数还是应该给大家的
发分了,多谢阿大家
 
后退
顶部