procedure TForm1.Button1Click(Sender: TObject); var ms:TMemoryStream; begin try if Not IdFTP1.Connected then begin IdFTP1.Host:=edtHost.text; IdFTP1.Port:=strtoint(edtPort.text); IdFTP1.Username:=edtUsername; IdFTP1.Password:=edtPassword; IdFTP1.Connect; end; Except On E:Exception do begin Exit; end; end; IdFTP1.ChangeDir('f:\windir'); //f:\windir表示服务器上的文件系统目录 ms:=TMemoryStream.Create; try IdFTP1.Get('f:\windir\wdsh0407.chm',ms,true); ms.SaveToFile(ExtracTFilePath(Application.ExeName)+'22.chm'+'.new'); ShowMessage('ok'); except end; end; 能下载一个文件,我想下载多个文件呢,如有文件夹呢?
如果想实现自己的文件下载,可以使用IdHttp组件,不过如果文件的数据量比较大的话,就比较麻烦了,如果你是三层应用,可以借助于服务端将文件分断传送,然后在客户端组合在一起.
调用windows的api函数URLDownloadToFile
如下:
URLDownloadToFile(nil,'http://www.zhcw.com/data-js/nowdata98.js','d:\3d.js',0,nil);蓝色的是要下载的文件地址,红的是保存的路径及名称.
URLDownloadToFile(nil, 'http://www.zhcw.com/data-js/nowdata98.js ', 'd:\3d.js ',0,nil);
我试了,可以下载,不要用IdHTTP或IdFTP吗?也不需要什么端口吗?这一句就可以了?
var
ms:TMemoryStream;
begin
try
if Not IdFTP1.Connected then
begin
IdFTP1.Host:=edtHost.text;
IdFTP1.Port:=strtoint(edtPort.text);
IdFTP1.Username:=edtUsername;
IdFTP1.Password:=edtPassword;
IdFTP1.Connect;
end;
Except
On E:Exception do
begin
Exit;
end;
end;
IdFTP1.ChangeDir('f:\windir'); //f:\windir表示服务器上的文件系统目录
ms:=TMemoryStream.Create;
try
IdFTP1.Get('f:\windir\wdsh0407.chm',ms,true);
ms.SaveToFile(ExtracTFilePath(Application.ExeName)+'22.chm'+'.new');
ShowMessage('ok');
except
end;
end;
能下载一个文件,我想下载多个文件呢,如有文件夹呢?