FTP -Verificar se existe um arquivo em uma determinada pasta
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]
Ricardo
[color=red:563b0d1b44]Título alterado pelo Moderador oTTo. Removido: ´FTP´.[/color:563b0d1b44]
Zlink
Curtidas 0
Respostas
Tatuweb
25/06/2004
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;
GOSTEI 0
Tatuweb
25/06/2004
Esqueci de informar. Você deve adicionar a unit Wininet na seção uses do form.
:wink:
:wink:
GOSTEI 0
Zlink
25/06/2004
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
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
GOSTEI 0
Zlink
25/06/2004
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
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
GOSTEI 0
Zlink
25/06/2004
c) listar as pastas e subpastas
d) editar um arquivo txt ou baixar para a máquina local para edita-lo
Obrigado
d) editar um arquivo txt ou baixar para a máquina local para edita-lo
Obrigado
GOSTEI 0
Flaviosan
25/06/2004
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.
Espero ter ajudado.
GOSTEI 0
Zlink
25/06/2004
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]);
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]);
GOSTEI 0
Tatuweb
25/06/2004
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:
GOSTEI 0
Zlink
25/06/2004
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
Funcionou beleza, estou precisando agora só de saber como pegar a lista de pastas e de arquivos de um ftp.
Atenciosamente
José Ricardo
GOSTEI 0
Tatuweb
25/06/2004
Baixe um exemplo completo nesse site:
http://users.servicios.retecal.es/sapivi/src/D5_WinInetFTP.zip
http://users.servicios.retecal.es/sapivi/src/D5_WinInetFTP.zip
GOSTEI 0
Guima
25/06/2004
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
Sem mais e obrigado
Guima
GOSTEI 0
Antunes Rodrigo
25/06/2004
Caso seja de interesse de mais alguém. Estava precisando disso.
http://www.cryer.co.uk/brian/delphi/wininet/example_findfirstnextfile.htm
http://www.cryer.co.uk/brian/delphi/wininet/example_findfirstnextfile.htm
GOSTEI 0