oracle 使用PL/SQL为APEX生成下载

hfwmuf9z  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(171)

我正在使用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
这个文件不是来自银行,我甚至不想把它保存在银行,唯一的情况下,将使用任何数据从银行将是定义文件的内容。

ecfsfe2w

ecfsfe2w1#

你可能已经看到了很多这样的例子:抓取一个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'));


你就可以走了

相关问题