我正在使用 Oracle Apex,我想在我的页面上添加一个下载文件的按钮,但该文件不会保存在银行中,我会生成具有特定内容的文件。例如,我可以吗,生成一个文件保存到临时目录,然后用PL/SQL下载?
我找到了如何生成一个文件并将其保存在
TMP_DIR
中,我想它看起来像这样:
DECLARE
l_file UTL_FILE.FILE_TYPE;
l_file_content VARCHAR2(100) := 'example text, example text...';
BEGIN
l_file := UTL_FILE.FOPEN('TMP_DIR', 'my_file.txt', 'W');
UTL_FILE.PUT_LINE(l_file, l_file_content);
UTL_FILE.FCLOSE(l_file);
END;
但是,我无法下载此文件,我找到了一些提示和解释,但它们在我的情况下不起作用,因为此文件不是来自我银行的表。例如,我可以将此执行添加到 APEX 中的按钮来下载
TMP_DIR
的文件吗?
该文件不是来自银行,我什至不想将其保存在银行中,使用银行中任何数据的唯一情况是定义文件的内容。
您可能已经见过很多获取 BLOB 并让您下载的示例,例如
procedure get_file (p_file in varchar2) is
l_blob my_files.blob_content%type;
l_mime my_files.mime_type%type;
begin
select blob_content, mime_type
into l_blob, l_mime
from my_files
where file_name = p_file;
htp.init;
owa_util.mime_header(l_mime, false);
htp.p('content-length: ' || dbms_lob.getlength(l_blob));
htp.p('content-disposition: filename="' || p_file || '"');
owa_util.http_header_close;
wpg_docload.download_file(l_blob);
apex_application.stop_apex_engine;
end;
由于您的源是一个平面文件,因此它只是一个小的编辑,即
l_blob := to_blob(bfilename('YOUR_DIR','your_file'));
你应该可以走了