Nuevos Procedimientos para Obtener y descargar archivos BLOB (GetBlob & DescargaBlob)
📦 GetBlob & DescargaBlob
Procedimientos reutilizables GeneXus — Obtener y descargar archivos BLOB de la base de datos
🔍 Procedimiento: GetBlob
¿Qué hace? Busca una plantilla en la BD por su código, recupera el archivo BLOB y lo deja en una ruta temporal del servidor para poder usarlo.
Parámetros
| Variable | I/O | Descripción |
|---|---|---|
&placod |
IN | Código numérico de la plantilla |
&nuevoarchivo |
OUT | Ruta del archivo temporal generado |
&PlaNom |
OUT | Nombre de la plantilla |
&PlaExtArc |
OUT | Extensión del archivo (xls, docx, pdf…) |
&mensaje |
OUT | Mensaje de error (si lo hubo) |
&Ok |
OUT | ‘S’ = éxito / ‘N’ = error |
⬇️ Procedimiento: DescargaBlob (DownloadBlob)
¿Qué hace? Toma un archivo de la ruta temporal del servidor y fuerza su descarga al navegador del usuario, armando un nombre único con fecha/hora.
.link, nunca con .Call. Si usás .Call la descarga no va a funcionar.Parámetros
| Variable | I/O | Descripción | Si viene de GetBlob |
|---|---|---|---|
&TipArc |
IN | Extensión sin el punto | Usar &PlaExtArc |
&Nombre |
IN | Nombre base del archivo | Usar &PlaNom |
&NuevoArchivo |
IN | Ruta temporal del archivo | Usar &NuevoArchivo |
Tipos de archivo soportados
| Extensión | Content-Type |
|---|---|
xls / xlt |
application/vnd.ms-excel |
xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
doc |
application/msword |
docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
pdf |
application/pdf |
zip |
application/x-zip-compressed |
Para agregar otro tipo, añadir un nuevo case en el Do Case con su Content-Type.
💡 Ejemplo: Descargar un Excel desde la BD
// 1. Obtener el BLOB (plantilla código 61)
GetBlob.Call(61, &NuevoArchivo, &PlaNom, &PlaExtArc, &mensaje, &Ok)
// 2. (Opcional) Modificar el Excel
&exceldocument.Open(&NuevoArchivo)
// modificar celdas acá si es necesario...
&exceldocument.Save()
&exceldocument.Close()
// 3. Descargar al navegador (¡con .link!)
DownloadBlob.link(&PlaExtArc, &PlaNom, &NuevoArchivo)
📂 ¿Dónde se cargan las plantillas?
Desde la Master Page → menú lateral → Parámetros Generales → botón “Plantillas”.
Ahí se pueden cargar, ver y modificar las plantillas BLOB. Cada una tiene un PLACOD único que es el código que se pasa a GetBlob.
📌 Notas importantes
GetBlob se llama con .Call |
DownloadBlob se llama con .link |
| Los archivos temporales se guardan en PublicTempStorage y se eliminan automáticamente. | |
| El nombre del archivo descargado incluye fecha y hora para evitar duplicados. | |
| Estos procedimientos son genéricos: sirven para cualquier tipo de archivo soportado. | |
//PUEDE SER QUE ALGUNOS NECESITAN ESTAS DEPENDENCIAS SI LES DA ERROR AL INTENTAR MANIPULAR EXCEL O DOCS:
https://drive.google.com/drive/folders/1_ie8b7rhro5YgxgklXhFgEzwFWFrVfT9?usp=sharing
//LAS RUTAS DONDE LAS DEBERAN INSERTAR SON:
d:\Proyectos\GX18\GX18_GesRec_PrdFuncional\JavaDB2iSeries002\Web\lib\
d:\Proyectos\GX18\GX18_GesRec_PrdFuncional\JavaDB2iSeries002\Web\WEB-INF\lib\
c:\Program Files\Apache Software Foundation\Tomcat 10.1\webapps\GX18_GesRec_DSRDesarrollo\WEB-INF\lib\