FTP -Verificar se existe um arquivo em uma determinada pasta

25/06/2004

6

Como verificar se um determinado arquivo esta em uma devida pasta de FTP, usando o delphi 7.

Ricardo



[color=red:563b0d1b44]Título alterado pelo Moderador oTTo. Removido: ´FTP´.[/color:563b0d1b44]


Responder

Posts

26/06/2004

Tatuweb

Se tratando de FTP eu prefiro fazer tudo via API. Assim evita problemas com versões diferentes do Delphi. Para verificar se existe um arquivo em um servidor FTP basta implementar o código abaixo. Modifique o código de acordo com seu servidor.

var
  hConnection, hOpen, hFind: PInteger;
  hData: TWIN32FINDDATA;
begin
  hOpen := InternetOpen (´´, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  hConnection := InternetConnect (hOpen, ´ftp.seusite.com.br´, INTERNET_DEFAULT_FTP_PORT,
    ´seulogin´, ´suasenha´, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
  FtpSetCurrentDirectory (hConnection, ´pasta_a_ser_verificada´);
  hFind := FtpFindFirstFile (hConnection, ´arquivo.exe´, hData, 0, 0);

  if hFind = nil then
    Caption := ´Arquivo não foi encontrado.´
  else
    Caption := ´O Arquivo foi encontrado.´;

  InternetCloseHandle (hConnection);
  InternetCloseHandle (hOpen);
end;



Responder

26/06/2004

Tatuweb

Esqueci de informar. Você deve adicionar a unit Wininet na seção uses do form.

:wink:


Responder

29/06/2004

Zlink

Tentei em farios ftps e alterando com várias pastas e arquivos, não obtive sucess.
Tem alguma forma de saber se tivemos acesso a determinado ftp ou pasta, algum retorno, exemplo:

label1.caption := ftp que está logado ou a pasta atual no ftp

Cordialmente

Ricardo


Responder

29/06/2004

Zlink

Caro Amigo

Refiz os testes com mais calma, e deu certo, muito obrigado pela rotina, se tiver mais algumas como:
a) listar os aquivos da pasta
b) ...

Ficarei muito agradecido.

Atenciosamente

José Ricardo


Responder

29/06/2004

Zlink

c) listar as pastas e subpastas
d) editar um arquivo txt ou baixar para a máquina local para edita-lo

Obrigado


Responder

29/06/2004

Flaviosan

Desculpe me meter, mas acho uma boa ideia testar a data do arquivo pra ver se ele é mais novo que um arquivo que já se possui, tipo como o liveupdate do virusscan e do norton.
Espero ter ajudado.


Responder

29/06/2004

Zlink

Fica mais uma dúvida

Como trocar as variaveis(pastas por edits)

Exemplo:
hConnection := InternetConnect (hOpen, ´meuftp.com.br´, INTERNET_DEFAULT_FTP_PORT,
hConnection := InternetConnect (hOpen, [b:68ecf2eacf]Edit1.text[/b:68ecf2eacf], INTERNET_DEFAULT_FTP_PORT,
´´, ´´, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
FtpSetCurrentDirectory (hConnection, ´/pasta/subpasta/´);
FtpSetCurrentDirectory (hConnection, [b:68ecf2eacf]edit2.text[/b:68ecf2eacf]);


Responder

30/06/2004

Tatuweb

Como trocar as variaveis (pastas por edits)

Faça do jeito que está fazendo mas antes coloque um PChar. Isso vai resolver o problema:
[b:9c8c5bc626]PChar (Edit1.Text)[/b:9c8c5bc626]

[b:9c8c5bc626]Outros comandos:[/b:9c8c5bc626]

[b:9c8c5bc626]Fazer download [/b:9c8c5bc626]
FtpGetFile (hConnection, ´arquivo.exe´, ´c:\pasta_onde_vou_guardar\arquivo.exe´, False, 0, 0, 0);

[b:9c8c5bc626]Fazer Upload [/b:9c8c5bc626]
FtpPutFile (hConnection, ´C:\arquivo.exe´, ´arquivo.exe´, 0, 0);

[b:9c8c5bc626]Deletar arquivo no servidor [/b:9c8c5bc626]
FtpDeleteFile (hConnection, ´arquivo.exe´);

[b:9c8c5bc626]Renomear um arquivo no servidor[/b:9c8c5bc626]
FtpRenameFile (hConnection, ´arquivo.exe´, ´file.exe´);

[b:9c8c5bc626]Remover um diretório no servidor[/b:9c8c5bc626]
FtpRemoveDirectory (hConnection, ´nome_do_diretorio´);

As tres primeiras e as duas ultimas linhas da rotina passada no outro post permanecem iguais. O resto é só adaptar. As rotinas acima são apenas uma alternativa ao uso dos componentes Indy e FastNet para evitar problemas com versões diferentes do Delphi. Use PChar antes das strings. Eu esqueci de colocar.

Mais sobre funções FTP em (conteúdo inglês):
http://www.swissdelphicenter.ch/torry/showcode.php?id=1095
http://www.cryer.co.uk/brian/delphi/wininet.htm

:wink:


Responder

30/06/2004

Zlink

Caro amigo

Funcionou beleza, estou precisando agora só de saber como pegar a lista de pastas e de arquivos de um ftp.

Atenciosamente

José Ricardo


Responder

01/07/2004

Tatuweb

Baixe um exemplo completo nesse site:
http://users.servicios.retecal.es/sapivi/src/D5_WinInetFTP.zip


Responder

02/02/2005

Guima

FtpPutFile (hConnection, PChar(Origem), PChar(SR.Name), 0, 0); TatuWeb fiz a sua rotina pra v c a foto estah na net, caso naun esteja envia, isso funciona legal, porem ela naun sobe - qdo vou no site ela naun estah lah - uso o D5 - alguem pode me ajudar urgente ??

Sem mais e obrigado

Guima


Responder
Caso seja de interesse de mais alguém. Estava precisando disso.


http://www.cryer.co.uk/brian/delphi/wininet/example_findfirstnextfile.htm
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira