CREATE OR REPLACE PROCEDURE DBSUPPORT.download_my_file(p_file in number) AS v_mime VARCHAR2(48); v_length NUMBER(10); v_file_name VARCHAR2(2000); Lob_loc BLOB; BEGIN SELECT MIME_TYPE, LOB_CONTENT, filename,DBMS_LOB.GETLENGTH(lob_content) INTO v_mime,lob_loc,v_file_name,v_length FROM file_upload WHERE kb_id = p_file; -- -- set up HTTP header -- -- use an NVL around the mime type and -- if it is a null set it to application/octect -- application/octect may launch a download window from windows owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE ); -- set the size so the browser knows how much to download htp.p('Content-length: ' || v_length); -- the filename will be used by the browser if the users does a save as htp.p('Content-Disposition: attachment; filename="'||replace(replace(substr(v_file_name,instr(v_file_name,'/')+1),chr(10),null),chr(13),null)|| '"'); -- close the headers -- owa_util.http_header_close; -- download the BLOB wpg_docload.download_file( Lob_loc ); end download_my_file; /