Olá @anael_ribeiro!
A técnica que vou mostrar arqui consiste em usar um código C# para baixar o arquivo do FTP para o servidor, e em seguida, montar uma URL para download pelo Latromi e devolve-la para o usuário.
O fluxo do arquivo será este:
FTP → Servidor do Latromi → Navegador do Usuário
Formulário
Siga os passos abaixo no Formulário Dinâmico.
Variáveis
Crie as variáveis a seguir:
- Adicione uma variável para receber o caminho remoto do arquivo. Neste exemplo, a variável se chama ftpFilePath.
- Adicione uma variável para receber a URL para download pelo Latromi. Neste exemplo, a variável se chama outputUrl.
Procedimentos
No procedimento onde você deseja que ocorra o download, adicione as instruções abaixo:
- Adicione uma instrução “Preencher Campos e Variáveis” para preencher a variável “ftpFilePath” com o caminho do arquivo no FTP (algo como
/www/meuarquivo.jpg
). Você pode buscar o caminho do arquivo do banco de dados usando uma “Record”. - Adicione uma instrução “Executar Código C#”. Aqui você adicionar o código a seguir para baixar o arquivo do FTP, substituindo os valores referentes ao endereço, usuário e senha do FTP:
using System.IO; using System.Net; // Dados do FTP string ftphost = "ftp.meudominio.com.br"; // Caminho remoto do arquivo. Algo como "/www/file.jpg" string ftpfilepath = Variables["ftpFilePath"].Value?.ToString(); string ftpfullpath = "ftp://" + ftphost + ftpfilepath; string ftpUser = "usuario"; string ftpPassword = "senha"; // Caminho fisico onde o arquivo será criado // Algo como: c:\inetpub\wwwlatromi\Web\Temp\Users\usuario\FTP_Downloads\arquivo.jpg string outputfilepath = Path.Combine(Environment.TempFolder, "FTP_Downloads", ftpfilepath.Split('/').LastOrDefault()); // Cria a pasta "FTP_Downloads" Directory.CreateDirectory(Path.GetDirectoryName(outputfilepath)); // URL para baixar o arquivo pelo LATROMI // Algo como: https://latromi.meudominio.com.br/web/Temp/Users/usuario/FTP_Downloads/arquivo.jpg string outputUrl = Environment.TempFolderUrl + @"\FTP_Downloads\" + ftpfilepath.Split('/').LastOrDefault(); try { using (WebClient request = new WebClient()) { // Passa usuário e senha do FTP. request.Credentials = new NetworkCredential(ftpUser, ftpPassword); // Faz download do arquivo request.DownloadFile(ftpfullpath, outputfilepath); } } catch (Exception ex) { throw new InvalidOperationException(ex.Message + "\t" + ex.InnerException?.Message); } // Preenche a variável do Formulário com a URL do arquivo para download Variables["outputUrl"].Value = outputUrl;
- Por último, adicione uma instrução “Abrir URL”, selecione o alvo “Download” e no URL, use apenas a marcação da variável
{?VAR outputUrl}
: