Nuevos Procedimientos para Obtener y descargar archivos BLOB (GetBlob & DescargaBlob)

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.

⚠️ SIEMPRE llamar con .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)
ℹ️ Si no necesitás modificar el archivo, salteá el paso 2 y pasá directo del 1 al 3.

📂 ¿Dónde se cargan las plantillas?

Desde la Master Page → menú lateral → Parámetros Generales → botón “Plantillas”.

Ahí se pueden cargarver 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\

Deja un comentario 0

Your email address will not be published. Campos requeridos marcados *