FTP - Download de Vários arquivos

Delphi

26/11/2007

Tenho esse código funcionando legal

procedure threadFTP.Execute;
begin
  inherited;
  with FUpdate do
    begin
      with FConfiguracao do
        begin
          ftpupdate.Host := LerINI(´CONEXAO´, ´FTP´);
          ftpupdate.Username := LerINI(´CONEXAO´, ´USUARIO´);
          ftpupdate.Password := LerINI(´CONEXAO´, ´SENHA´);
          if LerINI(´CONEXAO´, ´PASSIVO´) = ´S´ then
            ftpupdate.Passive := True
          else
            ftpupdate.Passive := False;
          ftpupdate.Connect(True);
          ftpupdate.ChangeDir(LerINI(´CONEXAO´, ´DIRETORIOSERVIDORFTP´));
          ftpupdate.List(NIL);
          tamanho_arquivo := ftpupdate.Size(LerINI(´CONEXAO´, ´ARQUIVO´));
          if FileExists(LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´) + ´\´ + LerINI(´CONEXAO´, ´ARQUIVO´)) then
            begin
              if FormatDateTime(´dd/mm/yyyy HH:mm´, FileDateToDateTime(FileAge(LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´)+´\´+LerINI(´CONEXAO´, ´ARQUIVO´)))) <> FormatDateTime(´dd/mm/yyyy HH:mm´, ftpupdate.DirectoryListing.Items[0].ModifiedDate) then
                 begin
                 if Application.MessageBox(´Existe uma nova versão dessa aplicação disponível na Internet. Deseja Atualizar Agora?´,´Aviso´, MB_ICONEXCLAMATION+MB_YESNO+MB_DEFBUTTON1) = mrYes then
                    begin
                    ftpupdate.Get(LerINI(´CONEXAO´, ´ARQUIVO´), LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´) + ´\´ +
                    LerINI(´CONEXAO´, ´ARQUIVO´), True);
                    FileSetDate(LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´) + ´\´ +
                    LerINI(´CONEXAO´, ´ARQUIVO´), DateTimeToFileDate(ftpupdate.DirectoryListing.Items[0].ModifiedDate));
                    end
                 else
                    abort;
                 end
             else
                 begin
                 Application.MessageBox(´Sua Versão é a Mais Atual´,´Aviso´, MB_ICONEXCLAMATION+MB_OK);
                 end
             end
          else
            begin
             if Application.MessageBox(´Executavel do Sistema não foi localizado. Baixar Update Mesmo Assim?´,´Aviso´, MB_ICONERROR++MB_YESNO+MB_DEFBUTTON1) = mrYes then
             begin
             ftpupdate.Get(LerINI(´CONEXAO´, ´ARQUIVO´), LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´) + ´\´ +
             LerINI(´CONEXAO´, ´ARQUIVO´), True);
             FileSetDate(LerINI(´CONEXAO´, ´DIRETORIOCLIENTE´) + ´\´ + LerINI(´CONEXAO´, ´ARQUIVO´), DateTimeToFileDate(ftpupdate.DirectoryListing.Items[0].ModifiedDate));
            end
            else
            abort;
            end;
          ftpupdate.Disconnect;
        end;
    end;
end;


Ele compara a data/hora do arquivo no servidor FTP com o local, mas apenas de um arquivo, como faço pra realizar o download de vários arquivos?


Facc

Facc

Curtidas 0

Respostas

Facc

Facc

26/11/2007

Alguem?


GOSTEI 0
Facc

Facc

26/11/2007

alguem? :x


GOSTEI 0
Fknyght

Fknyght

26/11/2007

Você pode usar varias TThread

procure na net que vc acha exemplos ok


GOSTEI 0
Facc

Facc

26/11/2007

ninguem?


GOSTEI 0
Massuda

Massuda

26/11/2007

Pelo seu código não dá para dizer que componente você está usando.

Se for Indy, o TIdFTP consegue baixar apenas um arquivo por vez. Se quiser baixar vários simultaneamente, terá que ter vários TIdFTP independente, cada um conectando no servidor e baixando o arquivo.

Note que dependendo do servidor, pode ser que o número de conexões simultaneas de um mesmo usuário seja limitada.


GOSTEI 0
Facc

Facc

26/11/2007

resolvido


GOSTEI 0
POSTAR