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

Vendedor 24h por dia: como automatizar seu processo comercial e vender mesmo dormindo
Você já imaginou ter um vendedor que trabalha 24 horas por dia, sem pausa, sem folga e sem pedir aumento?Parece exagero, mas esse “funcionário dos sonhos” já existe — e ele está nas automações que conectam seus canais digitais, CRM e processos comerciais. No mundo de hoje, quem depende apenas do horário comercial para vender […]
reforma tributária
Como garantir que seu Protheus está pronto para a reforma tributária
A tão falada reforma tributária está batendo à porta — e, ao contrário de outros assuntos que parecem distantes do dia a dia das empresas, essa vai mexer diretamente com a rotina fiscal, contábil e até operacional de praticamente todo negócio no país. E se você usa o Protheus, da TOTVS, já deve ter ouvido […]
Solicitação
Como desativar a edição de campos na Solicitação de Compras (MATA110) via ponto de entrada
Em muitos projetos com o Protheus, surge a necessidade de controlar quem pode alterar certos campos em uma tela — principalmente em rotinas sensíveis como a Solicitação de Compras (MATA110). No artigo de hoje, vamos mostrar como desativar a alteração de campos da grid da Solicitação de Compras utilizando ponto de entrada, sem precisar mexer […]
TOTVS
O que é TOTVS Insights e como ele pode transformar sua tomada de decisão
Vivemos em um momento em que os dados valem mais do que a intuição.As empresas que tomam decisões baseadas em informações confiáveis e atualizadas crescem mais rápido, erram menos e reagem melhor às mudanças do mercado. Mas ainda há um abismo enorme entre ter dados e saber o que fazer com eles. Quem usa o […]