首页 文章

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

提问于
浏览
0

我有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# . 我可以通过此链接下载我的文件 . 它工作正常,直到我的 Session 到期 . 当会话过期文件不再可访问时(无法找到网页) . 但是文件仍然存储在文件表中,如下所示:

files table

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

谢谢

2 回答

  • 1

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

    “WWV_FLOW_FILES上的任何选择,更新或删除操作都应更改为使用APEX_APPLICATION_TEMP_FILES表 . 不再需要删除,如 the file will automatically be purged after the request or when the session is purged . ”

  • 0

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

    例:

    '?在fp =&APP_ID:' || PAGE_ID || ':SESSION ::和调试:::: . '

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

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

相关问题