Páginas filhas
  • LGX - LFTP

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Pagetitle
LGX - LFTP
LGX - LFTP
 Classe para comunicação com servidores de FTP (File Transfer Protocol).


Hierarquia



Sintaxe



Bloco de código
LET l_ftp_reference = _ADVPL_create_component(NULL,"LFTP")


Métodos GET



Métodos acessíveis através da função _ADVPL_get_property que permite recuperar e manipular os valores do componente:

Expandir
titleGET FTP_CONNECT

Método GET: FTP_CONNECT

Realiza conexão com um servidor FTP.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_CONNECT",< cServer >,< nPort >,< cUser >,< cPassword >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cServerCHARNome ou endereço IP do servidor FTP.Sim


nPort
SMALLINT
Número da porta de comunicação com o servidor FTP.Sim
cUser
CHAR
Usuário para autenticação no servidor FTP.Sim
cPassword
CHAR
Senha para autenticação no servidor FTP.Sim

Retorno




TipoDescrição
SMALLINT

Verdadeiro se o servidor FTP foi conectado com sucesso.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
#------------------------------#
 FUNCTION LFTP_getFTP_CONNECT()
#------------------------------#
   DEFINE l_reference VARCHAR(10)     
   
   # Cria o componente para conexão FTP.     
   LET l_reference = _ADVPL_create_component(NULL,"LFTP")   
   
   # Conecta o componente ao servidor FTP.     
   LET l_status = _ADVPL_get_property(l_reference,"FTP_CONNECT","est1",21,"lg991933","********")
 END FUNCTION




Expandir
titleGET FTP_DOWNLOAD_FILE

Método GET: FTP_DOWNLOAD_FILE

Efetua o download de um arquivo do servidor FTP.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_DOWNLOAD_FILE",< cFile >,< cDir >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cFileCHARArquivo de origem do servidor FTP do qual será realizado o download para a máquina local ou para um diretório do servidor TOTVS Tec. O arquivo deve ser informado com o caminho completo do servidor FTP.Sim


cDir
CHAR
Diretório de destino onde será feito o download do arquivo. Podendo este ser da máquina local ou um diretório do servidor TOTVS Tec.Sim

Retorno




TipoDescrição
SMALLINT

Verdadeiro se o download do arquivo foi realizado com sucesso.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
 # Efetua o download de um arquivo do servidor FTP para a maquina local.     
LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_DOWNLOAD_FILE","\\home\\lg991933\\ftp_download.txt","C:\\ftp\\")   
   




Expandir
titleGET FTP_ERROR

Método GET: FTP_ERROR

Informa o código de erro da última ação FTP que falhou.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_ERROR")

Retorno




TipoDescrição
CHAR

Mensagem de erro ocorrida na última ação FTP que falhou.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
LET l_msgerror = _ADVPL_get_property(l_reference,"FTP_ERROR")




Expandir
titleGET FTP_GET_FILE_LIST_COUNT

Método GET: FTP_GET_FILE_LIST_COUNT

Quantidade de arquivos encontrados na execução do método FTP_LOAD_FILE_LIST.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_GET_FILE_LIST_COUNT") => INTEGER

Retorno




TipoDescrição
INTEGER

Quantidade total de arquivos encontrados no diretório informado no método "FTP_LOAD_FILE_LIST"

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
LET l_totalFiles = _ADVPL_get_property(l_reference,"FTP_GET_FILE_LIST_COUNT")




Expandir
titleGET FTP_GET_FILE_LIST_INDEX

Método GET: FTP_GET_FILE_LIST_INDEX

Arquivo encontrado numa determinada posição da lista de arquivos carregados pelo método FTP_LOAD_FILE_LIST.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_GET_FILE_LIST_INDEX",< nIndex >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
nIndexINTEGERÍndice do arquivo dentro da lista de arquivos encontrados no diretório informado na execução do método "FTP_LOAD_FILE_LIST".Sim


Retorno




TipoDescrição
INTEGER

Nome do arquivo

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
 # Carrega a lista dos arquivos de um diretório FTP. 
 CALL _ADVPL_set_property(l_ftp_reference,"FTP_LOAD_FILE_LIST","/home/lg991933/","*.*",TRUE)

 # Recupera a quantidade de arquivos encontrados no diretório. 
 LET l_count = _ADVPL_get_property(l_ftp_reference,"FTP_GET_FILE_LIST_COUNT") 
 FOR l_ind = 1 TO l_count 
    # Exibe no console todos os arquivos encontrados no diretório. 
    LET l_file_name = _ADVPL_get_property(l_ftp_reference,"FTP_GET_FILE_LIST_INDEX",l_ind) 
    CALL conout(l_file_name CLIPPED) 
 END FOR 




Expandir
titleGET FTP_REMOVE_FILE

Método GET: FTP_REMOVE_FILE

Remove um arquivo do servidor FTP.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_REMOVE_FILE",< cFile >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cFileCHARArquivo do servidor FTP que será removido, o arquivo deve ter o caminho do completo.Sim


Retorno




TipoDescrição
SMALLINT

Verdadeiro se o arquivo do servidor FTP foi removido com sucesso.

(ideia) Em caso de falha (Falso) a descrição do erro ocorrido pode ser recuperada utilizando o método FTP_ERROR.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
# Exclui um arquivo do servidor FTP.     
LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_REMOVE_FILE","\\home\\lg991933\\teste.txt")




Expandir
titleGET FTP_RENAME_FILE

Método GET: FTP_RENAME_FILE

Renomeia um arquivo do servidor FTP.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_RENAME_FILE",< cFile >,< cNewFile >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cFileCHARArquivo do servidor FTP que será renomeado, o arquivo deve ter o caminho do completo.Sim


cNewFile
CHAR
Novo nome que será atribuído ao arquivo informado.Sim

Retorno




TipoDescrição
SMALLINT

Verdadeiro se o arquivo do servidor FTP foi renomeado com sucesso.

(ideia) Em caso de falha (Falso) a descrição do erro ocorrido pode ser recuperada utilizando o método FTP_ERROR.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
# Renomeia um arquivo do servidor FTP. 
LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_RENAME_FILE","\\home\\lg991933\\ftp_download.txt","teste.txt")




Expandir
titleGET FTP_UPLOAD_FILE

Método GET: FTP_UPLOAD_FILE

Efetua o upload de um arquivo para o servidor FTP.

Sintaxe




Bloco de código
_ADVPL_get_property(< l_reference >,"FTP_UPLOAD_FILE",< cFile >,< cDir >) => SMALLINT

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cFileCHAR

Arquivo de origem do qual será realizado o upload para o servidor FTP. O arquivo deve estar com o caminho completo, podendo este ser da máquina local ou de um diretório do servidor TOTVS Tec.

A pesquisa do arquivo de origem sempre será realizada na seguinte ordem:
1) Pasta Local 

2) Pasta completa no servidor do AppServer.

3) Pasta no disco do servidor do AppServer, sendo uma pasta relativa ao ROOTPATH configurado no ambiente em uso.

Sim


cDir
CHAR
Diretório do servidor FTP de destino, onde será feito o UPLOAD do arquivo informado.Sim

Retorno




TipoDescrição
SMALLINT

Verdadeiro se o upload do arquivo foi realizado com sucesso.

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
 # Efetua o upload de um arquivo da máquina local para o servidor FTP.     
LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_UPLOAD_FILE","C:\\ftp\\ftp_upload.txt","\\home\\lg991933\\")     
   





Métodos SET



Métodos acessíveis através da função _ADVPL_set_property que permite alterar e manipular os valores do componente:

Expandir
titleGET FTP_DISCONNECT

Método SET: FTP_DISCONNECT

Desconecta um servidor FTP.

Sintaxe




Bloco de código
CALL _ADVPL_set_property(< l_reference >,"FTP_DISCONNECT")


Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
#---------------------------------#
 FUNCTION LFTP_setFTP_DISCONNECT()
#---------------------------------#
    CALL _ADVPL_set_property(l_reference,"FTP_DISCONNECT") 
 END FUNCTION




Expandir
titleGET FTP_LOAD_FILE_LIST

Método SET: FTP_LOAD_FILE_LIST

Carrega uma lista com os arquivos encontrados no diretório informado do servidor FTP.

Sintaxe




Bloco de código
CALL _ADVPL_set_property(< l_reference >,"FTP_LOAD_FILE_LIST", < cDir>, < cExtension >, < nListDir > )

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
cDirCHARDiretório do servidor FTP do qual deseja-se carregar a lista de arquivos.Sim


cExtension
CHAR
Define quais extensões de arquivos serão carregados na lista de arquivos.

nListDir
SMALLINT
Indicador que define se serão listadas os subdiretórios do diretório informado.
 FALSE

Observações


Caso não informada a extensão do arquivo, será considerado o padrão todos os arquivos (*.*).
Caso não informado se irá listar os subdiretórios, iserá considerado o padrão para não listar os subdiretórios (FALSE).

Exemplo




Bloco de código
languageruby
themeConfluence
titleExemplo
linenumberstrue
# Carrega a lista dos arquivos de um diretório FTP. 
CALL _ADVPL_set_property(l_ftp_reference,"FTP_LOAD_FILE_LIST","/home/lg991933/","*.*",TRUE)




Exemplo


Clique no link na lateral direita para expandir o código de exemplo.

Bloco de código
languageruby
themeConfluence
titleCódigo de exemplo do componente LQUERY
linenumberstrue
collapsetrue
#--------------------# 
 FUNCTION TesteLFTP()
#--------------------#     
   DEFINE l_ind           SMALLINT,            
          l_count         SMALLINT,            
          l_status        SMALLINT     
   DEFINE l_file_name     CHAR(050)     
   DEFINE l_ftp_reference VARCHAR(10)     
   
   # Cria o componente para conexão FTP.     
   LET l_ftp_reference = _ADVPL_create_component(NULL,"LFTP")   
   
   # Conecta o componente ao servidor FTP.     
   LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_CONNECT","est1",21,"lg991933","********")     
   
   IF  NOT l_status THEN         
       CALL log0030_mensagem("Não foi possível conectar-se ao servidor FTP.","excl")         
       RETURN     
   END IF     
   
   # Carrega a lista dos arquivos de um diretório FTP.     
   CALL _ADVPL_set_property(l_ftp_reference,"FTP_LOAD_FILE_LIST","/home/lg991933/","*.*",TRUE)
   
   # Recupera a quantidade de arquivos encontrados no diretório.     
   LET l_count = _ADVPL_get_property(l_ftp_reference,"FTP_GET_FILE_LIST_COUNT")     
   
   IF  l_count = 0 THEN         
       CALL log0030_mensagem("Nenhum arquivo encontrado no diretório '/home/lg991933/' do servidor FTP.","excl")         
       RETURN     
   END IF     
   
   FOR l_ind = 1 TO l_count         
       # Exibe no console todos os arquivos encontrados no diretório.         
       LET l_file_name = _ADVPL_get_property(l_ftp_reference,"FTP_GET_FILE_LIST_INDEX",l_ind)         
       CALL conout(l_file_name CLIPPED)     
   END FOR     
   
   # Efetua o upload de um arquivo da máquina local para o servidor FTP.     
   LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_UPLOAD_FILE","C:\\ftp\\ftp_upload.txt","\\home\\lg991933\\")          
   
   # Efetua o download de um arquivo do servidor FTP para a maquina local.     
   LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_DOWNLOAD_FILE","\\home\\lg991933\\ftp_download.txt","C:\\ftp\\")
   
   # Renomeia um arquivo do servidor FTP.     
   LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_RENAME_FILE","\\home\\lg991933\\ftp_download.txt","teste.txt")          
   
   # Exclui um arquivo do servidor FTP.     
   LET l_status = _ADVPL_get_property(l_ftp_reference,"FTP_REMOVE_FILE","\\home\\lg991933\\teste.txt")     
   
   # Disconecta do servidor FTP.     
   CALL _ADVPL_set_property(l_ftp_reference,"FTP_DISCONNECT") 
 END FUNCTION