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

解决方案 »

  1.   

    你可以使用indy的ftp上传组件,叫TIDFTP用这个上传给远程服务器,http://www.delphibbs.com/keylife/iblog_show.asp?xid=19997
    你可以看看这个。
      

  2.   

    看采取什么方式了 。http  ftp smtp ==都行的
      

  3.   

    完整代码  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;==长的帅没用==
      

  4.   

    谢谢blastodermx(柏拉图的迷茫) ,你提供的方法可行,但是为何老报
    “xx access is denied”错误,xx是要上传的文件名,我用的是xp+delphi6系统,
    我昨天自己弄了一个也是老报这个错误。
      

  5.   

    是我的ftp配置问题,我已解决。
      

  6.   

    完整代码  idftp上床程序.............. 晕死,错别字啊,哈哈