Efficiently File Download in Oracle APEX | Ontoor Solutions

Efficiently File Download in Oracle APEX | Ontoor Solutions

Oracle APEX provides many ways to download a file from the database. Each and every method is declarative and easy to implement. Whether you’re managing reports, generating dynamic content, or simply offering users the ability to access stored documents, APEX provides straightforward solutions that can be implemented without extensive coding.

In this blog post, we’ll dive into the various ways Oracle APEX facilitates file downloads. We’ll explore the declarative options available and provide step-by-step guidance on how to implement each method. Whether you’re an experienced developer or just getting started with APEX, you’ll find these techniques both practical and easy to follow. Let’s get started on simplifying file management with Oracle APEX!

IR Report

Classic reports

Ajax Process in application processes

Download dynamic action

Interactive Report

To download files using an Interactive report, we need to follow a few steps.

a. Create an Interactive report

b. The output report will look like the below image.

Change column type to Download BLOB.

After changing the column type, configure the BLOB attributes

Add download text

<i class=”fa fa-2x fa-image” title=”Download”></i>

2. Classic report

3. Using AJAX process

Step 1: Create a download procedure to call in the AJAX process.

CREATE OR REPLACE PROCEDURE download_file(
in_file_name IN VARCHAR2,
in_mime_type IN VARCHAR2,
in_blob_content IN BLOB
)
AS
l_blob BLOB:= in_blob_content;
begin
sys.htp.init;
sys.owa_util.mime_header( in_mime_type, FALSE );
sys.htp.p(‘Content-length: ‘ || sys.dbms_lob.getlength( l_blob));
sys.htp.p(‘Content-Disposition: attachment; filename=”‘ || in_file_name || ‘”‘ );
sys.htp.p(‘Cache-Control: max-age=3600’);– Cache hours
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( l_blob );

apex_application.stop_apex_engine;
end download_file;

Step 2: Create an application item

Step 3: Create AJAX callback process

DECLARE
CURSOR c_get_file
IS
SELECT PRODUCT_IMAGE, MIMETYPE, FILENAME
FROM AUW_PRODUCTS
WHERE PRODUCT_ID = :AI_PRODUCT_ID;
l_product_image BLOB;
l_mimetype varchar2(100);
l_filename varchar2(100);
BEGIN
OPEN c_get_file;
FETCH c_get_file INTO l_product_image, l_mimetype, l_filename;
CLOSE c_get_file;
IF dbms_lob.getlength(l_product_image) > 0 THEN
download_file(
in_file_name => l_filename,
in_mime_type => l_mimetype,
in_blob_content => l_product_image);
END IF;
END;

Now link the process to the product,

Go to IR or Classic report and any column to create a link.

4. Download dynamic action

The post Efficiently File Download in Oracle APEX | Ontoor Solutions appeared first on Ontoor blogs.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *