Quando trabalhamos com arquivos do tipo Blob (Binay large object), nos deparamos com situações onde devemos armazenar, em atributos ou variáveis, o nome e a extensão original do arquivo informado.
Trabalhando com Atributos
Ao trabalharmos com atributos isso pode ser realizado de uma forma bem simples. Por exemplo, em uma transação teremos 3 variáveis:
- File - blob;
- FileName - varchar(40);
- FileType - varchar(5);
Para gravarmos o nome e a extensão original do arquivo selecionado pelo usuário, devemos definir nas propriedades do atributo File (blob) as seguintes características:
Trabalhando com Variáveis
Um dos problemas em se trabalhar com variáveis do tipo Blob, é a falta de uma função para capturarmos o nome original do arquivo.
Por exemplo, quando o usuário da nossa aplicação deseja enviar algum arquivo via FTP ou Email, somos obrigados a gravar este arquivo em uma tabela para dessa forma, obtermos o nome original deste. Caso essa gravação não seja realizada, o arquivo enviado pelo usuário, automaticamente, é aberto na pasta "Temp media directory", que por padrão é a pasta "PublicTempStorage", e, recebe um nome aleatório.
Neste post irei demonstrar como podemos obter o nome original deste arquivo através da biblioteca Jquery.
Em uma Web Panel, adicionei à tela, duas variáveis e um botão. As variáveis definidas foram:
- &Blob - blob;
- &FileName - Varchar(40)
Agora precisamos programar a função em Jquery que irá executar esta captura do nome original. Para isso, utilizei a função "blur". Esta função é justamente o oposto da função "focus", ou seja, quando a variável blob perder o foco, o procedimento irá se executar. Vejamos:
Event Start
//=====Adiciona a biblioteca Jquery=====
Form.JScriptSrc.Add('http://code.jquery.com/jquery-latest.js">')
//=====Inicio do Script=====
Form.HeaderRawHTML = '<script type="text/javascript">'
Form.HeaderRawHTML += '$(document).ready(function(){'
//=====Quando a variável Blob perder o foco, executa=====
Form.HeaderRawHTML += '$("#vBLOB").blur(function(){'
Form.HeaderRawHTML += 'var nome = $("#vBLOB").val();'
Form.HeaderRawHTML += 'nome = nome.match(/[-_\w]+[.][\w]+$/i)[0];'
//=====Define o valor da variavel File name=====
Form.HeaderRawHTML += '$("#vFILENAME").val(nome);'
Form.HeaderRawHTML += '});'
Form.HeaderRawHTML += '});'
Form.HeaderRawHTML += '</script>'
EndEvent
//=====Adiciona a biblioteca Jquery=====
Form.JScriptSrc.Add('http://code.jquery.com/jquery-latest.js">')
//=====Inicio do Script=====
Form.HeaderRawHTML = '<script type="text/javascript">'
Form.HeaderRawHTML += '$(document).ready(function(){'
//=====Quando a variável Blob perder o foco, executa=====
Form.HeaderRawHTML += '$("#vBLOB").blur(function(){'
Form.HeaderRawHTML += 'var nome = $("#vBLOB").val();'
Form.HeaderRawHTML += 'nome = nome.match(/[-_\w]+[.][\w]+$/i)[0];'
//=====Define o valor da variavel File name=====
Form.HeaderRawHTML += '$("#vFILENAME").val(nome);'
Form.HeaderRawHTML += '});'
Form.HeaderRawHTML += '});'
Form.HeaderRawHTML += '</script>'
EndEvent
Mais uma ótima utilização de Jquery, qualquer dúvida o email genexus@outlook.com é ótimo para receber qualquer coisa. Abraço.