Como apagar arquivos de um servidor FTP via AdvPL

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:

  1. Separar o caminho e o nome do arquivo;
  2. Conectar ao servidor FTP;
  3. Navegar até o diretório correto;
  4. Excluir o arquivo desejado;
  5. 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.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

{{brizy_dc_image_alt entityId=
Problemas na instalação zerada do Protheus: por que esse erro aparece logo no início?
Quem já tentou fazer uma instalação zerada do Protheus sabe: nem sempre o erro aparece depois de dias de uso. Às vezes, ele surge logo no começo, antes mesmo de você conseguir acessar o ambiente. E isso frustra — principalmente quando, aparentemente, “está tudo certo”. No artigo de hoje, vamos falar justamente sobre os problemas […]
{{brizy_dc_image_alt entityId=
Qual a diferença entre Protheus e TOTVS? Entenda de uma vez por todas
Se você já participou de alguma reunião sobre ERP no Brasil, provavelmente já ouviu alguém dizer frases como “a gente usa TOTVS” ou “nosso sistema é TOTVS”. E aí começa a confusão. Porque, na prática, TOTVS não é um sistema. E essa confusão, que parece pequena, é uma das grandes responsáveis por decisões ruins, projetos […]
{{brizy_dc_image_alt entityId=
Movimentos recentes da tecnologia: liderança, infraestrutura e foco em execução
O mercado de tecnologia vive um momento de ajuste fino. Em vez de grandes discursos sobre inovação, o que aparece com mais força são decisões práticas, mudanças de liderança, revisão de estratégia e investimentos muito bem direcionados. As notícias abaixo mostram como empresas globais e brasileiras estão se movimentando para ganhar eficiência, reduzir riscos e […]
{{brizy_dc_image_alt entityId=
O ERP não falha. O problema quase sempre é o treinamento da equipe
É comum ouvir frases como “esse ERP não funciona”, “o sistema é travado” ou “ninguém gosta de usar isso aqui”. Na maioria dos casos, o problema não está no ERP em si. Está na forma como a equipe foi (ou não foi) preparada para usar o sistema no dia a dia. Empresas investem valores altos […]