Usando a SftpUserPassFileUpload para envio de arquivos

Boa tarde!

Estou com uma demanda para envio de arquivos para um servidor SFTP e comecei a usar a nova função SftpUserPassFileUpload.

Estou com um problema onde a função sempre retorna -1, e não consigo ver o que está errado pois ela não me dá nenhum outro retorno (como usuário ou senha inválido, entre outros).

Uso as mesmas credenciais no FileZilla e WinSCP e funciona normalmente.

Alguém já usou essa nova função e sabe dizer como obter um retorno mais detalhado?

Grato.

Oi Giordano,

-1 é uma falha na requisição.

Já verificou se o servidor tem SSHD presente conforme a documentação ? Talvez o problema seja esse.

Bom dia! Como posso verificar isso? É um servidor de terceiro.

Oi, na própria documentação do link para sobre o SSHD.
Ao testar esta função favor apontar para um servidor com o SSHD presente e utilizar um nome de usuário e senha válidos.

Boa noite! Sim, mas eu gostaria de saber como posso identificar se o servidor em questão possui SSHD, pois este é um servidor de terceiro onde o único acesso que eu tenho é o endereço, usuário e senha. O que eu consigo afirmar é que é um servidor SFTP que funciona normalmente ao usar outros gerenciadores como o FileZilla.

E então, pessoal, também estou com retorno -1, com um servidor que sendo acessado normalmente pelo FileZilla. Como conferir esse SSHD? Do que exatamente se trata?

Aqui estou com erro -2 em um .txt de teste, não consigo entender o motivo, o arquivo abre normalmente com FOPEN e O servidor está ok, credenciais também, pois uso as mesmas no FileZilla com protocolo SFTP. Alguém tem mais documentação sobre essas funções? Outra pergunta: o que quer dizer SSHD presente? Desconheço essa sigla nesse contexto.

Boa noite. Verifique se você está usando o caminho completo do arquivo e não só o caminho do RootPath. Por algum motivo ele só aceita caminhos absolutos, e a documentação não deixa isso claro (inclusive é uma documentação bem incompleta e cheia de erros). Exemplo: use “C:\TOTVS\Protheus12\Protheus_Data\Temp\arquivo.txt” ao invés de “\Temp\arquivo.txt”

Pois então, mesmo colocando o caminho todo (arquivo local do PC) recebemos -2 como retorno.
status := SFTPUserPassFileUpload(“C:\11-01-21\teste.txt”, “teste_out.txt”, ‘165.72.204.111’, ‘user123’, ‘senha123’)
Estou testando sem ser via tela, dando set environment no módulo FATURAMENTO. Alguma outra ideia do que pode estar ocorrendo?

Sidnei, coloca o arquivo no Servidor e então no primeiro parâmetro coloque o caminho inteiro… como o Giordano comentou !

Nosso server é no TOTVS CLOUD, não sei como fica o caminho antes do rootpath nesse caso (perdão o desconhecimento). Testei colocando na pasta System e na TEMP e buscando o caminho do arquivo com a função cGetFile, mas o caminho retornado é a partir do Rootpath. Alguma ideia? (Abri 2 chamados na totvs mas não respondem, e pra piorar tenho urgencia nisso).

Acredito que já tenha olhado essa documentação mas não custa perguntar… heheheh
https://tdn.totvs.com/display/public/PROT/FTP
https://tdn.totvs.com/display/tec/Classe+TFtpClient

Resolvido o retorno -2, ocorre que deve ser passado o caminho completo local no servidor, que no nosso caso pode ser buscado usando o seguinte trecho de código: AllTrim(GetSrvProfString(“ROOTPATH”,“”)) + ‘\temp\arquivo.txt’. (Para um arquivo na pasta TEMP do protheus_data.
Agora estamos com erro -1… Difícil trabalhar assim, sem documentação detalhada e sem códigos e descrições de erro detalhados… Infelizmente um costume da TOTVS que passou da hora de mudar.

Bom dia!

Em contato com a TOTVS, fui informado que no meu caso o problema estava ocorrendo pois a função não estava permitindo a conexão com servidores SFTP que usem uma porta diferente da padrão que é 22, no meu caso eu estava usando a 8022.

A função também estava com problemas pelo fato de possuir mais de 10 caracteres em seu nome, e ao usar a mesma em AdvPL e não TL++, estavam ocorrendo erros de chamar a função de upload ao invés da de download e vice versa.

Foi aberta uma issue de manutenção para ambos os casos e a previsão é que as correções sejam lançadas com o AppServer 19.3.1.8.