在以前的帖子中有这样的FTP下载的方法
定义:
Function DoFileDownload(lpszFile:Widestring):longint; stdcall; external 'shdocvw.dll';调用:
DoFileDownload('ftp://10.73.18.49/FTP专用\0\Video\XXX.exe');这样是很简单,但是这样会弹出对话框,让用户选择文件保存的路径。我想不让它弹出选择保存路径的对话框,保存路径自己填写,保存的文件名称也自己填写,这个函数调用是否能实现,有没有哪位能解决。如果这个函数不能实现我的要求,希望大侠给个FTP下载的好方法:
要求:
1,要下载的文件名称由用户传递过去(服务器那边已经存在的文件);
2,下载的文件保存的名称程序里面定义,不让用户自己定义;
3,下载的文件的保存路径程序里面设定好,不让用户自己定义;
4,下载的速度能和上面的函数一样快;
定义:
Function DoFileDownload(lpszFile:Widestring):longint; stdcall; external 'shdocvw.dll';调用:
DoFileDownload('ftp://10.73.18.49/FTP专用\0\Video\XXX.exe');这样是很简单,但是这样会弹出对话框,让用户选择文件保存的路径。我想不让它弹出选择保存路径的对话框,保存路径自己填写,保存的文件名称也自己填写,这个函数调用是否能实现,有没有哪位能解决。如果这个函数不能实现我的要求,希望大侠给个FTP下载的好方法:
要求:
1,要下载的文件名称由用户传递过去(服务器那边已经存在的文件);
2,下载的文件保存的名称程序里面定义,不让用户自己定义;
3,下载的文件的保存路径程序里面设定好,不让用户自己定义;
4,下载的速度能和上面的函数一样快;
解决方案 »
- class TTePanel not found
- 能否将dbgrideh的页脚统计能否移到表格上面(最好每页都显示总记录数),或者其它三方控件有没有该功能
- 多层结构中怎么更新Join出来的数据集?
- 我是个绝对的笨蛋,请比我聪明的朋友进来帮忙,得到结果我就散分,谢谢!(在线等待)
- ??? FastReport 简单主报表 子报表问题 ???
- 关于画"心"函数
- 我竟然不知道面向过程和面向对象的不同之处和个有什么优缺点????
- 请问如何用API函数实现监视端口什么时候有数据传送?
- 有没有什么工具能察看dll文件所能输出的各种函数,及其函数原型
- 大家来帮忙!!!
- 一个字符串截取的问题~~~~~~~~~~
- 周末散分
function TFrmFtpDownload.FtpGetFile(Source, Target: string): boolean;
begin
result := false;
try
try
IdFTP1.Connect;
try
IDFtp1.Get(Source, Target, true);
result := true;
except
if not NoIndyError then ShowMessage('下载文件出错!');
end;
except
if not NoIndyError then ShowMessage('连接服务器出错!');
end;
finally
IdFTP1.Disconnect;
end;
end;
呵呵_____________________
http://lysoft.7u7.net
我试过你那段代码,下载的时候,硬盘还是吱吱的响,而且没有我问题中讲的那方法快,那方法最起码硬盘不响。能有更快的方法吗?要的就是速度,希望大家帮忙!
我仔细测试了下时间,用你的ftp代码下载644兆的文件用来11分钟,而我直接从服务器上拷贝644兆的文件才用3分钟,这样时间差得太远,最起码差一般的时间也行。
按照你的意思,我对Indy不是很熟悉,能否给给开多线继传的简单例子?
谢谢了!
var
Ini: TIniFile;
NewVersion,Newfiles,Version :string ;
NewFile :array[0..3] of string;
i:integer;
begin
//=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //±?D????′D′?£2?è?2?3é1|꧰üμ?ó???
try
idFTPSun.Host:=Ini.ReadString( 'data', 'host', '127.0.0.1' );
idFTPSun.Username:=Ini.ReadString( 'data', 'Username', 'anonymous' );
idFTPSun.Password:=Ini.ReadString( 'data', 'Password', '' );
Newfiles := Ini.ReadString( 'data', 'file','222' );
finally
Ini.Free;
end;
//==================== get new Version end ==================
try
idFTPSun.Connect(true,10000);
except
showmessage('á??ó?÷?ú꧰ü!?ì2éí???');
ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL);
end;
idFTPSun.ChangeDir('/update');
idFTPSun.Get('update.ini','temp.ini',true,false);
pb.Position:=10;//???è????
//==================== ger new Version begin=====================
//Ini := TIniFile.Create( 'E:\002.??è????t\ftp×??ˉ?üD?3ìDò\update21.ini' );//±?D????′D′?£2?è?2?3é1|꧰üμ?ó???
Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'temp.ini'); //±?D????′D′?£2?è?2?3é1|꧰üμ?ó??? try
NewVersion := Ini.ReadString( 'data', 'Version', '123' );
Newfiles := Ini.ReadString( 'data', 'file','222' );
NewFile[0] :=Ini.ReadString( 'data', 'file0','222' );
NewFile[1] :=Ini.ReadString( 'data', 'file1','222' );
NewFile[2] :=Ini.ReadString( 'data', 'file2','222' );
NewFile[3] :=Ini.ReadString( 'data', 'file3','222' );
finally
Ini.Free;
deleteFile('temp.ini');
end;
//==================== get new Version end ==============
pb.Position:=pb.Position+10;//???è????
//=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //±?D????′D′?£2?è?2?3é1|꧰üμ?ó???
label1.Caption:=Ini.FileName;
try
Version := Ini.ReadString( 'data', 'Version', '123' );
finally
Ini.Free;
end;
//==================== get new Version end ==================
pb.Position:=pb.Position+10;//???è????
//=================== compare the files and download begin=======================
if Version<>NewVersion then
begin
showmessage('D?°?±?o?=>'+NewVersion+#13+Newfiles+#13+'?é°?±?o?=>'+Version); idFTPSun.Get(Newfiles,Newfiles,true,false);
for i:=0 to 3 do
begin
if length(NewFile[i])>1 then
idFTPSun.Get(NewFile[i],NewFile[i],true,false);
pb.Position:=pb.Position+5; end;
label1.Caption:='D?°?±?o?=>'+NewVersion+#13+Newfiles+#13+'?é°?±?o?=>'+Version+idFTPSun.RetrieveCurrentDir;
idFTPSun.Get('update.ini','update.ini',true,false);
label1.Caption:='?üD?3é1|,3ìDò?y3£???ˉ';
end
else
begin label1.Caption:='?üD?3é1|,3ìDò?y3£???ˉ';
end;
//=================== compare the files download end=========
pb.Position:=pb.Position+10;//???è????
pb.Position:=100;//???è????
idFTPSun.Abort; //???aá??ó
idFTPSun.Quit; //í?3?á??ó//========================================???ˉ
ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL); application.Terminate;
//=========================================
end;====CSDN 小助手 V2.0 2005年10月16日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
下载:http://szlawbook.com/csdnv2/csdnv2.rar为神六喝彩,向所有科技工作者致敬!
拒绝日货。