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

Oracle Apex:会话过期后无法访问BLOB列中存储的文件,oracle,oracle-apex,oracle-apex-5,Oracle,Oracle Apex,Oracle Apex 5,我有Oracle Apex应用程序来上传文件。文件由P14文件浏览项加载,存储类型设置为apex应用程序临时文件。按下上载按钮后,执行具有以下PL/SQL代码的流程: declare begin insert into files( ID, NAME, FILENAME, MIME_TYPE, CONTENT ) select ID, NAME, FILENAME, MIME_TYPE, BLOB_CONTENT from a

我有Oracle Apex应用程序来上传文件。文件由P14文件浏览项加载,存储类型设置为apex应用程序临时文件。按下上载按钮后,执行具有以下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。我可以通过这个链接下载我的文件。在我的会话到期之前,它可以正常工作。当会话过期文件不再可访问时,无法找到网页。但文件仍存储在文件表中,如您所见:

为什么我的文件不能被p访问?n=。。会话过期后?我正在使用Oracle 12c和Oracle Apex 5.1

谢谢

根据文档:

对WWV_FLOW_文件的任何选择、更新或删除操作都应更改为使用APEX_APPLICATION_TEMP_FILES表。不再需要删除,因为在请求后或会话被清除时,文件将自动被清除。

只是一个建议: 根据上载的文件定义指向报告的链接时,一定要包含会话和调试id

例如:

“f?p=&APP_ID.:”|| PAGE_ID | |::&SESSION:&DEBUG::'

这是指向具有app_idAPP_ID的应用程序的页面ID的链接

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

但我已将文件插入到表文件中。会话结束时,apex_应用程序_temp_文件中的文件将自动清除,但它们仍在我的表文件中。我可以在那里看到它们,但它们无法接近。为什么?或者这不是永久存储数据的正确方法?编辑:我使用了Download BLOB type列,而不是link p?n=ID,它表示临时。这个想法是,它是一个文件的临时存放区,您需要在会话结束之前将它们复制到其他地方。还有其他问题。会话过期后,p?n=链接无法访问数据。但使用下载blob内容列类型访问数据没有问题。