No artigo de hoje, vamos ver em como apagar arquivos de servidores externos usando FTP via AdvPL.
Recentemente me perguntaram, se via AdvPL era possível excluir arquivos em um servidor usando FTP.
Pensando nisso montamos esse exemplo, onde a lógica consiste em:
- Dar um SplitPath no arquivo para pegar o caminho e o filename separados
- Utilizar FtpConnect para se conectar no servidor
- Usar a função Separa para quebrar o caminho das pastas em um array
- Fazer um for nas pastas e ir modificando a pasta posicionada no FTP através da FTPDirChange
- Se tudo der certo, ai acionar a FTPErase
- E depois desconectar com a FTPDisconnect
Abaixo segue o fonte com essa lógica:
//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 @version version @param cArquiFTP, Caractere, 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 := "" //Somente se veio arquivo no FTP If ! Empty(cArquiFTP) //Quebra o arquivo em partes SplitPath(cArquiFTP, @cDrive, @cDiretorio, @cNome, @cExtensao) //Realiza a conexão lContinua := FTPConnect(cFTPUrl, nFTPPort, cFTPUser, cFTPPass) //Se tiver tudo ok If lContinua //Pega as pastas aPastas := Separa(cDiretorio, "\") //Vai navegando nas pastas For nAtual := 1 To Len(aPastas) If ! Empty(aPastas[nAtual]) lContinua := lContinua .And. FTPDirChange(aPastas[nAtual]) //Se deu falha em algum, encerra o processo If ! lContinua Exit EndIf EndIf Next //Aciona a exclusão do arquivo dentro da pasta If lContinua FTPErase(cNome + cExtensao) EndIf EndIf //Desconecta o FTP FTPDisconnect() EndIf FWRestArea(aArea) Return
Obs.: Para servidores Linux, apenas se atente, pois as pastas e arquivos, você precisará passar corretamente caracteres maiúsculos e minúsculos.
Bom pessoal, por hoje é só.
Um grande abraço a todos e até a próxima.