jueves, 17 de diciembre de 2015

Descargar archivos PDF, Word y Excel desde un icono de una columna del Informe Interactivo en Oracle Apex 5.0

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!!!




2 comentarios:

  1. Hola Clarisa, no se visualiza el enlace para seguir leyendo, me puedes ayudar por favor.

    ResponderEliminar