Home » orclapex-spanish » Mostrar contenidos BLOB (PDF, imágenes) en una región en la página de Oracle Apex

Mostrar contenidos BLOB (PDF, imágenes) en una región en la página de Oracle Apex

Aquí doy un ejemplo para mostrar BLOB contenidos (PDF, imágenes) en una región en la página de Oracle Apex.

Suponga que tiene una pantalla de empleado y cada vez que el usuario abre esa pantalla para editar o ver el registro, desea mostrar la nómina del empleado, ya sea en formato de imagen o en formato PDF. Para realizar esta tarea, siga los siguientes pasos:

  1. En primer lugar, necesita una tabla en la que desee almacenar el BLOBcontenido y la estructura de esa tabla debe ser la siguiente:
CREATE TABLE EMP_PAYSLIPS 
   (EMPNO NUMBER, 
  FILENAME VARCHAR2(200), 
  REPORT BLOB, 
  MIMETYPE VARCHAR2(100), 
  CREATED_DATE DATE, 
  CREATED_BY VARCHAR2(100)
   );

ALTER TABLE EMP_PAYSLIPS ADD CONSTRAINT PK_EMPPAYSLIPS
PRIMARY KEY (EMPNO);

Nota: La columna MIMETYPEtiene un papel importante aquí. Siempre que almacene un PDF en los BLOBdatos, MIMETYPEdebería ser y si almacena imágenes, entonces debería ser .application/pdfMIMETYPEimage/jpeg

Además, consulte mi publicación anterior, en la que he dado un ejemplo para cargar archivos PDF en un campo BLOB en Oracle Apex .

  1. Ahora asumo que tiene datos en la tabla anterior.
  2. Ahora, en Oracle Apex, haga clic en Componentes compartidos > Proceso de aplicación y haga clic en el botón Crear para crear un Proceso de aplicación. La pantalla aparecerá como se muestra en la imagen de abajo.
Create Application Process in Oracle Apex
  1. Especifique un nombre en el campo Nombre y, para Punto, seleccione Ajax Callback: Ejecute este proceso de aplicación cuando lo solicite una opción de proceso de página. Luego haga clic en el botón Siguiente .
  2. En el siguiente paso, agregue el siguiente código PL/SQL en la sección de código PL/SQL como se muestra a continuación:
DECLARE
  vBlob blob;
  vmimetype varchar2(50);
BEGIN
  SELECT report, mimetype INTO vBlob, vmimetype
                FROM emp_payslips
                WHERE empno = V('P3_EMPNO');
                 
  owa_util.mime_header(vmimetype,false);
  htp.p('Content-Length: ' || dbms_lob.getlength(vBlob)); 
  owa_util.http_header_close;  
  wpg_docload.download_file(vBlob);
  exception 
  when no_data_found then
   null;
END;
PL/SQL code application process.
  1. Luego haga clic en el botón Siguiente y en otra pantalla simplemente haga clic en el botón Finalizar para crear el Proceso de solicitud.
  2. Ahora abra la página en Oracle Apex en la que desea mostrar el BLOBcontenido.
  3. Cree una nueva región y configure el tipo como contenido estático y coloque el siguiente código en la fuente de texto, como se muestra en la imagen a continuación:
<p align="center">
<iframe src="f?p=&APP_ID.:0:&SESSION.:APPLICATION_PROCESS=display_emp_blob:NO::P3_EMPNO,&P3_EMPNO." width="99%" height="1000">
</iframe>
</p>
Oracle Apex - Static Region

Puede notar en el código anterior que estamos llamando al proceso de solicitud display_emp_blob que acabamos de crear, utilizando el formato de URL de Apex.

Guarde los cambios y ejecute la página para probar. Cada vez que abra la pantalla Empleado en modo Editar, BLOBse mostrarán datos en la región, ya sea una imagen o un archivo PDF.