Introdução
Em muitos projetos que envolvem integração entre o Protheus e sistemas externos, é comum precisar manipular arquivos em servidores FTP — seja para baixar, enviar ou até mesmo excluir arquivos remotamente.
E sim, é totalmente possível fazer isso via AdvPL. No artigo de hoje, vamos mostrar como apagar arquivos de um servidor FTP diretamente pelo código, utilizando funções nativas da linguagem.
Essa solução é útil, por exemplo, para rotinas automáticas de integração, em que os arquivos processados precisam ser removidos para evitar duplicidades ou sobrecarga no servidor.
Entendendo a lógica da exclusão via FTP
A ideia geral é simples:
- Separar o caminho e o nome do arquivo;
- Conectar ao servidor FTP;
- Navegar até o diretório correto;
- Excluir o arquivo desejado;
- E por fim, desconectar com segurança.
Com base nessa sequência, foi criada uma função chamada zDelFTP(), que automatiza esse processo de ponta a ponta.
Etapas detalhadas
1. Separando o caminho do arquivo
A primeira etapa é utilizar a função SplitPath(), que divide o caminho completo em partes (drive, diretório, nome e extensão).
Isso facilita a manipulação das pastas antes de executar o comando de exclusão.
2. Conectando ao servidor FTP
Em seguida, é feita a conexão utilizando FTPConnect(), informando o servidor, porta, usuário e senha.
Uma dica importante: a senha está armazenada com Decode64(), para evitar que fique em texto puro no código.
3. Navegando pelas pastas
Depois da conexão, o código usa a função Separa() para quebrar o caminho em um array de pastas.
Com isso, um loop percorre cada pasta, mudando o diretório ativo com FTPDirChange() até chegar na pasta onde o arquivo realmente está.
4. Apagando o arquivo
Chegando na pasta certa, é hora de excluir o arquivo com FTPErase() — que remove o arquivo indicado do servidor.
5. Encerrando a conexão
Para finalizar, a função FTPDisconnect() garante que a conexão seja encerrada corretamente, liberando os recursos de rede.
Exemplo de código completo
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} zDelFTP
Função para apagar o arquivo dentro do FTP
@type user function
@author Atilio
@since 20/06/2025
@param cArquiFTP, Caminho do arquivo no FTP
@example u_zDelFTP("\2025-02\nf_entradas\mp\arquivo.txt")
/*/
User Function zDelFTP(cArquiFTP)
Local aArea := FWGetArea()
Local lContinua := .T.
Local cFTPUrl := "ftp.milenioapp.com"
Local cFTPUser := "protheus@milenioapp.com"
Local cFTPPass := Decode64("bTc5KnVxeG1NNC1V")
Local nFTPPort := 21
Local cDrive := ""
Local cDiretorio := ""
Local cNome := ""
Local cExtensao := ""
Local aPastas := {}
Local nAtual := 0
Default cArquiFTP := ""
If ! Empty(cArquiFTP)
SplitPath(cArquiFTP, @cDrive, @cDiretorio, @cNome, @cExtensao)
lContinua := FTPConnect(cFTPUrl, nFTPPort, cFTPUser, cFTPPass)
If lContinua
aPastas := Separa(cDiretorio, "\")
For nAtual := 1 To Len(aPastas)
If ! Empty(aPastas[nAtual])
lContinua := lContinua .And. FTPDirChange(aPastas[nAtual])
If ! lContinua
Exit
EndIf
EndIf
Next
If lContinua
FTPErase(cNome + cExtensao)
EndIf
EndIf
FTPDisconnect()
EndIf
FWRestArea(aArea)
Return
Atenção aos detalhes em servidores Linux
Um ponto importante: em servidores Linux, os nomes de pastas e arquivos são sensíveis a maiúsculas e minúsculas.
Ou seja, “Arquivo.txt” é diferente de “arquivo.txt”.
Certifique-se de passar o caminho exatamente como está configurado no servidor, ou o comando poderá falhar.
Conclusão
Excluir arquivos de um servidor FTP via AdvPL é uma tarefa simples, mas que exige cuidado com detalhes como caminhos, permissões e autenticação.
Com a função zDelFTP(), você consegue automatizar a limpeza de diretórios FTP, mantendo suas rotinas de integração mais seguras e organizadas.
Se você quiser entender como aplicar isso no seu ambiente Protheus, ou integrar esse processo com rotinas automatizadas de integração, entre em contato com a Geeker Company — nossa equipe pode te ajudar a configurar tudo de forma prática e segura.
Fale conosco
Se você quer implementar essa rotina de exclusão automática no seu ambiente Protheus, integrar com outros sistemas ou otimizar seus processos de integração, fale com a Geeker Company. Nossa equipe é especialista em soluções personalizadas em AdvPL, integrações FTP e automação de rotinas para deixar seu sistema mais seguro, leve e eficiente.




