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.