1) Para efetuar uma conexão FTP utilizando o Notes, primeiramente é necessário adicionar na aplicação a biblioteca java "JakartaFtpWrapper" juntamente com os .jar que seguem em anexo.
2) Após adicionar a Library criaremos um agente em Lotus script que fará a comunicação com o FPT.
2.1) Adicionar os seguintes imports no agente:
UseLSX "*LSXODBC"
UseLSX "*javacon"
Use "JakartaFtpWrapper"
3) Abaixo temos 4 métodos em Lotus Script que fará a comunicação com o FTP: "desconectaFTP", "conectaFTP", "enviarArquivoFTP" e "removerArquivoFTP", levando em consideração que objeto "ftpClient" está como global:
Dim ftpClient As JavaObject
Sub conectaFTP
On Error GoTo Handler
Dim jSession As New JavaSession
Dim ftpClass As JavaClass
Dim jError As JavaError
Dim ipServerFTP As String
Dim userFTP As String
Dim passwordFTP As String
ipServerFTP = docProf.ipServerFTPGerConteudo(0) 'Ip do servidor FTP
userFTP = docProf.userFTPGerConteudo(0) 'Usuário ara acesso ao FTP
passwordFTP = docProf.passwordFTPGerConteudo(0) 'Senha para acesso ao FTP
'** Cria uma instância da classe em Java JakartaFtpWrapper que segue em anexo
Set ftpClass = jSession.GetClass("JakartaFtpWrapper")
Set ftpClient = ftpClass.CreateObject
'** Chama a função do objeto instânciado acima para efetuar a conexão com o FTP
'** Caso tenha conectado com Sucesso ele retorna True, caso contrário retorna False
If ftpClient.connectAndLogin(ipServerFTP, userFTP, passwordFTP) Then
Print "Conectado com sucesso em " + ipServerFTP
Print "Timeout atual é " + CStr(ftpClient.getSoTimeout()) + " ms"
Else
Print "Conexão com FTP não realizada"
GoTo ExitSub
End If
ExitSub:
If Not ftpClient Is Nothing Then
Delete ftpClient
End If
Exit Sub
Handler:
Set jError = jSession.getLastJavaError()
If (jError.errorMsg = "") Then
msgErro = "Erro nº : " & Err & " - " & Error & " na linha " & Erl
Print "Sub conectaFTP: " & msgErro
Else
msgErro = "Erro nº : " & Erl & ": " & jError.errorMsg & " na linha " & Erl
Print "Sub conectaFTP: " & msgErro
jSession.ClearJavaError
End If
Resume ExitSub
End Sub
Sub desconectaFTP
On Error GoTo Handler
Dim jSession As New JavaSession
Dim jError As JavaError
'** Efetua o logout e disconecta do FTP
If Not ftpClient Is Nothing Then
Call ftpClient.logout()
Call ftpClient.disconnect()
Delete ftpClient
End If
Exit Sub
Handler:
Set jError = jSession.getLastJavaError()
If (jError.errorMsg = "") Then
msgErro = "Erro nº : " & Err & " - " & Error & " na linha " & Erl
Print "Sub desconectaFTP: " & msgErro
Else
msgErro = "Erro nº : " & Erl & ": " & jError.errorMsg & " na linha " & Erl
Print "Sub desconectaFTP: " & msgErro
jSession.ClearJavaError
End If
If Not ftpClient Is Nothing Then
Delete ftpClient
End If
End Sub
'Parâmetros:
' localFile: caminho do arquivo que está na máquina/servidor que deseja enviar para o FTP
' serverFile: caminho/nome que ficará no servidor FTP
Sub enviarArquivoFTP(localFile, serverFile)
On Error GoTo Handler
Dim jSession As New JavaSession
Dim jError As JavaError
If Not ftpClient Is Nothing Then
Call ftpClient.binary()
If ftpClient.uploadFile(localFile, serverFile) Then
Print "Upload do arquivo " + localFile + " para " + serverFile + ", realizado com sucesso."
Else
Print "Upload não realizado " + serverFile + " (" + ftpClient.getReplyCode() + ")"
End If
End If
Exit Sub
Handler:
Set jError = jSession.getLastJavaError()
If (jError.errorMsg = "") Then
msgErro = "Erro nº : " & Err & " - " & Error & " na linha " & Erl
Print "Sub enviarArquivoFTP: " & msgErro
Else
msgErro = "Erro nº : " & Erl & ": " & jError.errorMsg & " na linha " & Erl
Print "Sub enviarArquivoFTP: " & msgErro
jSession.ClearJavaError
End If
End Sub
'Parâmetros:
' serverFile: caminho/nome do arquivo a ser removido do servidor FTP
Sub removerArquivoFTP(serverFile)
On Error GoTo Handler
Dim jSession As New JavaSession
Dim jError As JavaError
If Not ftpClient Is Nothing Then
If ftpClient.deleteFile(serverFile) Then
Print "Removeu arquivo: "+serverFile
Else
Print "Não foi possível remover o arquivo: "+serverFile
End If
End If
Exit Sub
Handler:
Set jError = jSession.getLastJavaError()
If (jError.errorMsg = "") Then
msgErro = "Erro nº : " & Err & " - " & Error & " na linha " & Erl
Print "Sub removerArquivoFTP: " & msgErro
Else
msgErro = "Erro nº : " & Erl & ": " & jError.errorMsg & " na linha " & Erl
Print "Sub removerArquivoFTP: " & msgErro
jSession.ClearJavaError
End If
End Sub