Tuesday, March 3, 2020

Download Files in Oracle APEX



CREATE TABLE ATTACHEMENTS
(
   ID             NUMBER,
   ILE_NAME       VARCHAR2 (400),
   FILE_TYPE      VARCHAR2 (400),
   FILE_SIZE      VARCHAR2 (400),
   FILE_CONTENT   BLOB
);

Create a Apex Page with Region - PL/SQL Dynamic Content 

DECLARE
   v_mime         VARCHAR2 (200) := NULL;
   v_lob_length   NUMBER := 0;
   v_file         VARCHAR2 (100) := NULL;
   v_blobref      BLOB;
BEGIN
   SELECT T.FILE_NAME FILE_NAME,
          T.FILE_TYPE FILE_TYPE,
          DBMS_LOB.GETLENGTH (T.FILE_CONTENT) AS FILE_LENGTH,
          T.FILE_CONTENT
     INTO v_file,
          v_mime,
          v_lob_length,
          v_blobref
     FROM  << ATTACHMENTS>> T
    WHERE FILE_ID = 123;

   sys.HTP.init;
   sys.OWA_UTIL.mime_header (NVL (v_mime, 'application/octet'),
                             FALSE,
                             'UTF-8');
   sys.HTP.p ('Content-length: ' || v_lob_length);
   sys.HTP.p (
      'Content-Disposition: attachement; filename="' || v_file || '"');
   sys.OWA_UTIL.http_header_close;
   sys.WPG_DOCLOAD.download_file (v_blobref);
   APEX_APPLICATION.stop_apex_engine;
EXCEPTION
   WHEN OTHERS
   THEN
      sys.HTP.prn ('error: ' || SQLERRM);
      APEX_APPLICATION.stop_apex_engine;
END;

No comments:

Post a Comment