请教如何使用indy组件实现文件自动上传?

swsw1 2006-06-20 09:38:28
请教如何使用indy组件实现文件自动上传?
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
netdust 2006-09-11
  • 打赏
  • 举报
回复
完整代码 idftp上床程序

.............. 晕死,错别字啊,哈哈
swsw1 2006-06-21
  • 打赏
  • 举报
回复
是我的ftp配置问题,我已解决。
swsw1 2006-06-21
  • 打赏
  • 举报
回复
谢谢blastodermx(柏拉图的迷茫) ,你提供的方法可行,但是为何老报
“xx access is denied”错误,xx是要上传的文件名,我用的是xp+delphi6系统,
我昨天自己弄了一个也是老报这个错误。
postren 2006-06-20
  • 打赏
  • 举报
回复
什么叫自动上传?
sxper 2006-06-20
  • 打赏
  • 举报
回复
完整代码 idftp上床程序

procedure TForm1.Button1Click(Sender: TObject);
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'); //必须那么写。不然不成功失败的郁闷
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('连接主机失败!检查网络');
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.个人文件\ftp自动更新程序\update21.ini' );//必须那么写。不然不成功失败的郁闷
Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'temp.ini'); //必须那么写。不然不成功失败的郁闷

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'); //必须那么写。不然不成功失败的郁闷
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('新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+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;
label1.Caption:= NewFile[i];
end;
label1.Caption:='新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+Version+idFTPSun.RetrieveCurrentDir;
idFTPSun.Get('update.ini','update.ini',true,false);
label1.Caption:='更新成功,程序正常启动';
end
else
begin

label1.Caption:='更新成功,程序正常启动';
end;
//=================== compare the files download end=========
pb.Position:=pb.Position+10;//进度控制


pb.Position:=100;//进度控制
idFTPSun.Abort; //断开连接
idFTPSun.Quit; //退出连接

//========================================启动


ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL);

application.Terminate;
//=========================================
end;

==长的帅没用==
天涯倦客 2006-06-20
  • 打赏
  • 举报
回复
看采取什么方式了 。http ftp smtp ==都行的
blastodermx 2006-06-20
  • 打赏
  • 举报
回复
你可以使用indy的ftp上传组件,叫TIDFTP用这个上传给远程服务器,http://www.delphibbs.com/keylife/iblog_show.asp?xid=19997
你可以看看这个。
swsw1 2006-06-20
  • 打赏
  • 举报
回复
就是在程序运行过程中如果产生错误则生成一个文件记录下来,想在此时自动传给服务器,如何实现?谢谢!

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧