Boa pergunta hein, e a resposta é mais simples do que voce imagina.
Você só precisa definir um novo atributo na estrutura da transação (em que o Blob esteja definido) para armazenar a extensão do arquivo carregado, e em seguida na propriedade FileTypeAttribute definir esse atributo.
Por exemplo, definimos na estrutura a seguir dois atributos, um para o Blob e outro para a extensão.

Em seguida, basta definir na propriedade FileTypeAttribute do blob o nome do atributo extensão.
O Genexus tratará as extensões corretas e apresentará o resultado na interface sem nenhum problema, mesmo que estejamos falando de PNG, JPG, XLS, e cuidado! EXE!

Outro cuidado a tomar é o armazenamento do Blob na mesma estrutura principal do registro, a tabela ficará gigante, e consequentemente, lenta.
Você só precisa definir um novo atributo na estrutura da transação (em que o Blob esteja definido) para armazenar a extensão do arquivo carregado, e em seguida na propriedade FileTypeAttribute definir esse atributo.
Por exemplo, definimos na estrutura a seguir dois atributos, um para o Blob e outro para a extensão.
Em seguida, basta definir na propriedade FileTypeAttribute do blob o nome do atributo extensão.
O Genexus tratará as extensões corretas e apresentará o resultado na interface sem nenhum problema, mesmo que estejamos falando de PNG, JPG, XLS, e cuidado! EXE!
3 comentários:
Boa tarde Douglas,
Gostaria de sabe como eu faço para gravar e carregar(em um update), uma imagem. Vou falar o processo que fiz.
Criei os seguintes atributos:
-Foto
-FotoTipo
-FotoNome
primeiro problema que me surgiu:
Quando eu escolho uma imagem ela somente é exibida depois de um comando "REFRESH".
Segundo problema:
No banco o campo "FOTO" fica "binary data", é assim mesmo? Os outros 2 campos são preenchidos corretamente quando gravado.
Terceiro problema:
Quando vou fazer um "UPDATE" no cadastro, a imagem cadastrada não carrega.
Você poderia me ajudar?
Grato,
Lucas. SKYPE(mion.vikam)
Oi Lucas,
Quanto ao binary data, de fato a imagem é gravada no banco de dados no formato de dados binarios, e no momento em que abre a mesma, o Gx recupera essa informação e a grava como uma imagem fisica (com a extensão indicada em FotoTipo, por exemplo) para que possa ser aberta pelo navegador.
Por isso é que existem dois diretórios temporarios que são utilizados pelo Gx para realizar o upload e download da imagem no banco. Aparecem no web.config:
add key="CS_BLOB_PATH" value="PublicTempStorage"
add key="TMPMEDIA_DIR" value="PrivateTempStorage"
Quanto a essas questões operacionais (refresh, update), isso fica meio estranho pra mim, precisaria conhecer melhor a implementação que fez ai para poder dar uma opinão mais concreta.
ab
Olá! Por favor, será que alguém saberia me dizer se é possível carregar uma imagem em uma coluna do EXCEL?
Postar um comentário