How To Download One Or More Files In Oracle Apex

 Download One Or More Files

1. Create a process 

 declare

    var_zip blob;
     
begin
     
  -- Create/clear the ZIP collection
  apex_collection.create_or_truncate_collection(
      p_collection_name => 'ZIP');
     
 for i in 1..apex_application.g_f01.count 
 loop
   -- Loop through all the files in the database
    begin
        for var_file in (select file_name, blob_content
                         from movie
                         where 1=1
                           and file_name is not null
                           and id = apex_application.g_f01(i))
        loop
            -- Add each file to the var_zip file
            apex_zip.add_file (
                p_zipped_blob => var_zip,
                p_file_name   => var_file.file_name,
                p_content     => var_file.blob_content );
        end loop;  

    exception when no_data_found then
        -- If there are no files in the database, handle error
        raise_application_error(-20001, 'No Files found!');
    end;

    end loop;
     
    -- Finish creating the zip file (var_zip)
    apex_zip.finish(
        p_zipped_blob => var_zip);
     
    -- Add var_zip to the blob column of the ZIP collection
    apex_collection.add_member(
        p_collection_name => 'ZIP',
        p_blob001            => var_zip);
 
end;


2. Createa Ajax Call Back process and call it as download_zip_file

declare
  var_mimetype varchar2(50) := 'application/zip';
  var_name varchar2(100) := to_char(current_date, 'DD-MON-YYYY') || '_files_by_project.zip';
  var_blob blob;
   
begin
    -- Get the BLOB from the ZIP collection
    select blob001 into var_blob from apex_collections where collection_name = 'ZIP' and seq_id = 1;
     
    sys.htp.init;
    sys.owa_util.mime_header( var_mimetype, FALSE );
    sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( var_blob));
    sys.htp.p('Content-Disposition: attachment; filename="' || var_name || '"' );
    sys.htp.p('Cache-Control: max-age=3600');  -- tell the browser to cache for one hour, adjust as necessary
    sys.owa_util.http_header_close;
    sys.wpg_docload.download_file( var_blob );
 
    apex_application.stop_apex_engine;
     
exception when apex_application.e_stop_apex_engine then
    NULL;
      

end; 


3.  Create a Branch after processing

Download One Or More Files

 


Then Enjoy

Post a Comment

Hlo Sir

Previous Post Next Post