Oracle Apex:会话过期后无法访问存储在BLOB列中的文件

时间:2017-06-25 12:37:52

标签: oracle oracle-apex oracle-apex-5

我有Oracle Apex应用程序来上传文件。文件由P14_FILE_BROWSE项加载,存储类型设置为apex_application_temp_files。按下上传按钮后,执行以下PL / SQL代码:

declare 
begin
 insert into files(

              ID, NAME, FILENAME, MIME_TYPE, CONTENT )

       select ID, NAME, FILENAME, MIME_TYPE, BLOB_CONTENT

       from   apex_application_temp_files

       where  name = :P14_FILE_BROWSE;
    end;

我已使用此表创建报告,列ID定义为URL链接p?n =#ID#。我可以通过此链接下载我的文件。它工作正常,直到我的会议到期。当会话过期文件不再可访问时(无法找到网页)。但是文件仍然存储在文件表中,如下所示:

files table

为什么会话到期后p?n = ..无法访问我的文件?我正在使用Oracle 12c和Oracle Apex 5.1。

谢谢

2 个答案:

答案 0 :(得分:1)

根据文件: http://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#HTMRN264

" WWV_FLOW_FILES上的任何选择,更新或删除操作都应更改为使用APEX_APPLICATION_TEMP_FILES表。删除不再是必需的,因为文件将在请求后或清除会话时自动清除。"

答案 1 :(得分:0)

只是一个建议: 根据您上传的文件定义报告的链接时,请包括会话和调试ID。

示例:

'F P =&安培; APP_ID:?' || PAGE_ID || ':& SESSION。::& DEBUG。::::'

这是指向具有app_id(APP_ID)的应用程序的页面(PAGE_ID)的链接

这里, PAGE_ID是一个报告页面,此报告基于使用文件浏览器上载的文件。 当我错过了包含会话和调试ID时,我也无法在新会话中找到我的报告页面。