Oracle Apex:会话过期后无法访问BLOB列中存储的文件
我有Oracle Apex应用程序来上传文件。文件由P14文件浏览项加载,存储类型设置为apex应用程序临时文件。按下上载按钮后,执行具有以下PL/SQL代码的流程: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
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内容列类型访问数据没有问题。