Seguramente en algún momento te encontraste con la situación de querer tener un listado de archivos y que los puedas descargar directamente desde un icono o enlace desde el informe interactivo.
Por ello es que he desarrollado este ejemplo para que puedas aplicarlo y adaptarlo a tus desarrollos en Apex.
Necesitamos para este ejemplo crear una tabla que contendrá los datos de los diferentes archivos. Ingresamos al Taller de SQL y ejecutamos cada una de las siguientes sentencias:
CREATE TABLE "MY_FILE_BLOB"
( "ID" NUMBER,
"TITLE" VARCHAR2(500),
"DESCRIPTION" VARCHAR2(500),
"BLOB_CONTENT" BLOB,
"MIMETYPE" VARCHAR2(255),
"FILENAME" VARCHAR2(255),
"LAST_UPDATED" DATE,
"CHARACTER_SET" VARCHAR2(128),
CONSTRAINT "MY_FILE_BLOB_PK" PRIMARY KEY ("ID") ENABLE
)
/
CREATE SEQUENCE "MY_FILE_BLOB_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999
INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE
/
CREATE OR REPLACE TRIGGER «BI_MY_FILE_BLOB»
before insert on «MY_FILE_BLOB»
for each row
begin
if :NEW.»ID» is null then
select «MY_FILE_BLOB_SEQ».nextval into :NEW.»ID» from sys.dual;
end if;
end;
/
ALTER TRIGGER «BI_MY_FILE_BLOB» ENABLE
/
Ahora creamos el Informe Interactivo por medio del asistente “Pantalla Basada en Tabla con Informe”, utilizando como origen la tabla MY_FILE_BLOB y en la página que corresponde al formulario de carga de datos seleccionamos las columnas: TITLE, DESCRIPTION y BLOB_CONTENT, el resto de las columnas no lo mostramos.
Cargar Iconos en nuestro Espacio de Ttrabajo
Ingresamos a los Componentes Compartidos de la aplicación, seleccionamos Archivos de Espacio de Trabajo Estático y cargamos los 3 iconos que representan los archivos de tipo PDF, Excel y Word.
- #WORKSPACE_IMAGES#icon-excel-75.gif
- #WORKSPACE_IMAGES#icon-word-75.png
- #WORKSPACE_IMAGES#icon-pdf-75.png
Editar Origen Consulta SQL del Informe Interactivo
Desde el Diseñador de Páginas, hacemos clic en la región del Informe Interactivo y en el panel de la derecha en la sección Origen reemplazamos el origen con la siguiente consulta SQL:
select «ID»,
«TITLE»,
«DESCRIPTION»,
«FILENAME»,
«MIMETYPE»,
dbms_lob.getlength(«BLOB_CONTENT») «BLOB_CONTENT»,
CASE
WHEN FILENAME LIKE ‘%.pdf’ THEN ‘<a href=»‘||apex_util.get_blob_file_src(‘P2_BLOB_CONTENT’,ID)||'»><img alt=»» title=»Archivo PDF» src=»#WORKSPACE_IMAGES#icon-pdf-75.png» width=48 /></a>’
WHEN FILENAME LIKE ‘%.docx’ THEN ‘<a href=»‘||apex_util.get_blob_file_src(‘P2_BLOB_CONTENT’,ID)||'»><img alt=»» title=»Archivo MS Word» src=»#WORKSPACE_IMAGES#icon-word-75.png» width=48 /></a>’
WHEN FILENAME LIKE ‘%.xlsx’ THEN ‘<a href=»‘||apex_util.get_blob_file_src(‘P2_BLOB_CONTENT’,ID)||'»><img alt=»» title=»Archivo MS Excel» src=»#WORKSPACE_IMAGES#icon-excel-75.gif» width=48 /></a>’
ELSE MIMETYPE END AS «FILE_ICONO»,
«LAST_UPDATED»,
«CHARACTER_SET»
from «#OWNER#».»MY_FILE_BLOB»
where mimetype NOT LIKE ‘%jpeg’
AND mimetype NOT LIKE ‘%png’
AND mimetype NOT LIKE ‘%gif’
ORDER BY ID
Guardamos los cambios.
La consulta SQL además de mostrar todas las columnas de la tabla MY_FILE_BLOB crea una columna adicional para mostrar el icono que corresponde a la aplicación que se muestra en el registro y ese dato lo toma de la columna FILENAME, para este ejemplo usamos archivos de PDF, Excel y Word.
Editar Página 1 – Informe Archivos Almacenados
Seleccionamos la columna BLOB_CONTENT y en la sección ATRIBUTOS_BLOB del panel de la derecha asignamos los siguientes valores:
- Columna de Tipo MIME: MIMETYPE
- Columna de Nombre de Archivo: FILENAME
- Última Columna BLOB Actualizada: LAST_UPDATED
- Columna de Juego de Caracteres: CHARACTER_SET
Ocultamos las columnas: ID, MIMETYPE, FILENAME, CHARACTER_SET, LAST_UPDATED
Editar Página 2 – Formulario Gestionar Archivos
Cambiamos los títulos y luego seleccionamos el elemento P2_BLOB_CONTENT y en la sección Configuración en el panel derecho de propiedades del elemento asignamos los campos como se muestra a continuación:
- Columna de Tipo MIME: MIMETYPE
- Columna de Nombre de Archivo: FILENAME
- Columna de Juego de Caracteres: CHARACTER_SET
- Última Columna BLOB Actualizada: LAST_UPDATED
- Mostrar Enlace de Descarga: Sí
- Texto de Enlace de Descarga: Descargar Archivo
- Disposición del Contenido: Attachment
Cargar Archivos
Ejecutamos la aplicación y cargamos los tres tipos de archivos: PDF, Excel y Word.
La columna FILE_ICONO corresponde a la imagen que mostrará el registro dependiendo el tipo de archivo mostrado en la columna FILENAME.
Seleccionamos la columna FILE_ICONO y en el panel de la derecha en la sección Seguridad indicamos Caracteres Especiales de Escape = No.
Ejecutamos la aplicación y podemos observar que ahora se muestra el icono de acuerdo al archivo cargado.
La columna Archivo (la que corresponde al link de descarga) podemos ocultarla, haciendo clic en el botón Acciones y seleccionamos la columna y lo pasamos al cuadro de No Mostrar.
Al hacer clic en cualquiera de los iconos podemos descargar los archivos a nuestra PC.
Aquí terminamos y será hasta un próximo post!!!
Hola Clarisa, no se visualiza el enlace para seguir leyendo, me puedes ayudar por favor.
Hola, aqui tienes el articulo completo. Saludos!
Hola
me preguntaba que pasaria el archivo pdf esa fisicamente en una ruta remota de windows como por ejemplo \file_serverpath_file nombre_archivo.pdf? Y yo quisiera que una columna del interacvtive donde tengo almacenada la ruta me descarge o me muestre el pdf? Es esto posible?
Saludos a todos
Hola, puedes ver este otro post que te puede guiar para lo que quieres y lo adaptas segun tus requerimientos. https://descubriendooracle.blogspot.com/2014/05/mostrar-pdf-guardados-en-nuestro-file.html Saludos