En este post , nosotros veremos como descargar archivos txt o cualquiera desde un proceso de Apex Oracle.
En el ejemplo retornaremos el primer archivo de la tabla.
Adicionalmente crearemos este proceso en el before header y sera llamado con un submit desde la misma pagina.
Puede ver la demo aqui demo here user: demo/ pass: demo
Dejo algunos enlaces fuente original del post, solo que aqui tengo el codigo mas simple posible para la ejecucion de este proceso.
Paso1: Crear un proceso After Header
declare l_xml clob; l_blob blob; l_lang_context integer := DBMS_LOB.DEFAULT_LANG_CTX; l_warning integer := DBMS_LOB.WARN_INCONVERTIBLE_CHAR; l_dest_offset integer := 1; l_source_offset integer := 1; l_name varchar2(250); begin dbms_lob.createtemporary(l_blob, true); begin Select FILE_BLOB,FILENAME into l_blob,l_name from BLOG_FILES where rownum = 1; exception when others then RETURN; --apex_application.stop_apex_engine; --owa_util.http_header_close; end; /*if l_blob is null then return; end if;*/ htp.init; -- Set the MIME typebranck owa_util.mime_header( \'application/octet-stream\', FALSE,\'UTF-8\' ); -- Set the name of the file htp.p(\'Content-Disposition: attachment; filename=\"\'||l_name||\'\"\'); owa_util.http_header_close; --package that provides an interface to download files (BLOBs and BFILEs) wpg_docload.download_file( l_blob ); --stop further processing and immediately exit apex_application.stop_apex_engine; exception when others then htp.prn(\'error: \'||sqlerrm); apex_application.stop_apex_engine; end;
Paso 2 crear un boton en la misma pagina con un submit y un request \”DOWNLOAD\” el mismo que sera usado como server side condition por el proceso afterHeader.
Disculpa no encuentro como agregas las configuraciones al botón, verás yo quiero descargar un archivo .XML, espero puedas ayudarme…
LikeLike
Hola disculpa la demora, el boton no se configura, toda la configuracion que necesitas lo realizas en el proceso, en el ejemplo el file name tiene la extension, asi que deberias poder descargar cualquier tipo de archivo.
LikeLiked by 1 person
Hola el codigo representa errores
LikeLike
Hola me gustaria que puedas compartir el error, acabo de probar la demo y funciona correctamente. Puedes descarga el app demo de aquí: https://github.com/Aftorres02/blog_app_examples
LikeLike