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

Como transformar seus representantes comerciais em uma força de vendas digital com Protheus + Flexy
Seu representante vende ou passa o dia resolvendo problemas operacionais? Imagine um representante comercial diante de um cliente interessado em fechar um pedido. O relacionamento está construído, existe interesse na compra, mas antes de avançar ele precisa confirmar preço, consultar disponibilidade de um produto, verificar uma condição comercial ou mandar uma mensagem para alguém do […]
Workshop Gratuito: Como Replicar Campos de uma Base de Testes para Produção no Protheus
Neste workshop, vamos mostrar de forma prática como replicar campos de uma base de testes para produção no Protheus, abordando os principais cuidados e boas práticas para realizar esse processo com mais segurança, organização e eficiência, reduzindo riscos e evitando retrabalho no ambiente produtivo.
Cibersegurança: como proteger pequenas empresas de ataques hacker
Cibersegurança: como proteger pequenas empresas de ataques hacker Pequenas empresas são alvos atraentes para atacantes: menor superfície de defesa, processos menos maduros e frequentemente orçamentos restritos. Este texto aborda controles técnicos e estratégicos com terminologia precisa, indicado para profissionais de TI com conhecimento prévio. Entenda primeiro o modelo de ameaça: determine ativos críticos (dados de […]
Protheus
Como replicar campos, tabelas e índices no Protheus usando a Gestão de Ambientes (UPDDISTR)
Replicar customizações no Protheus pode ser muito mais simples do que parece Quem trabalha com desenvolvimento ou sustentação no TOTVS Protheus provavelmente já passou pela seguinte situação: depois de concluir uma customização em uma base de desenvolvimento ou homologação, chega o momento de levar todas aquelas alterações para produção. À primeira vista parece uma tarefa […]