Classe para enviar arquivos para FTP
Exemplo da Rotina:
oFtp := tFTPClient():New()
Exemplo 1- Envia arquivo para FTP:
Static Function fUpFile(cFileOrig, nSegundos)
Local cServer := "server.site.com"
Local nPort := 21
Local cUser := "usuario"
Local cPass := "senha@123"
Local cFTPDest := "/pasta_no_ftp/"
Local cDataTemp := "\x_ftp_temp\"
Local cNameFile := ""
Local cFileDest := ""
Default cFileOrig := ""
Default nSegundos := 5
//Se tiver o arquivo e o destino
If ! Empty(cFileOrig)
oFtp := tFTPClient():New()
//Tenta estabelecer a conexão
If oFtp:FTPConnect(cServer, nPort, cUser, cPass) == 0
//Pega apenas o nome do arquivo com a extensão
cNameFile := SubStr(cFileOrig, RAt("\", cFileOrig) + 1, Len(cFileOrig))
cFileDest := cValToChar(Year(Date())) + "_" + StrZero(Month(Date()), 2) + "-" + cNameFile
//Se não existir a pasta temporária dentro da Protheus Data, cria ela
If ! ExistDir(cDataTemp)
MakeDir(cDataTemp)
EndIf
//Copia o arquivo origem para dentro da Protheus Data
CpyT2S(cFileOrig, cDataTemp)
//Muda o diretório do FTP
If oFtp:ChDir(cFTPDest) == 0
//Tenta fazer o upload da Protheus Data para o destino no FTP
If oFtp:SendFile(cDataTemp + cNameFile, Alltrim(cFTPDest + cFileDest)) == 0
//Sleep(nSegundos * 1000)
u_MsgLog("Atenção", "Arquivo copiado com sucesso!" + CRLF + "Acesse em site.com.br" + StrTran((cFTPDest + cFileDest), "/public_html", ""))
Else
MsgStop("Falha ao copiar o arquivo para o FTP!", "Atenção")
EndIf
Else
MsgStop("Não foi possível mudar o diretório de Upload!", "Atenção")
EndIf
//Fecha a conexão
oFtp:Close()
Else
MsgStop("Erro de conexão!", "Atenção")
EndIf
EndIf
Return