文件浏览项目上传到BLOB列

时间:2019-05-23 09:52:46

标签: oracle-apex

数据库中的一个表有一个BLOB列,用于存储图像。因此,现在我为该表设置页面。我有一堆IG,可以处理大多数数据,但是我设置了一个模态页面来处理图像。

模式页面将ID(即PK)放入一个项中,然后将表中当前的图像读取到“ Display Image”项中。我有一个“文件浏览...”项,可以上传新图像。

除非我无法保存它。

我最初从显示图像项开始,只是具有SQL语句返回的Setting Based on:BLOB列,因为我无法使用SQL查询源(错误CHAR,源是BLOB),因此我设法通过在页面上进行自动行处理然后将源作为列来解决此问题。

所以现在它显示良好,没有错误。

但是保存无济于事。我已尝试通过使“文件”浏览器引用该列并使用自动行处理来进行保存,但没有任何内容。没有错误弹出,但是它什么也没做。

我尝试保存到APEX_APPLICATION_TEMP_FILES,然后将PLSQL DA或PLSQL进程保存到

SELECT blob_content 
  FROM APEX_APPLICATION_TEMP_FILES
 WHERE name = :FILE_BROWSER_ITEM

并将其插入表格中,但是会弹出“找不到数据”错误。

我已经遍历了我的google-fu找到的所有信息,但是我没有找到解决方法。

因此,我希望您能获得任何见解。

1 个答案:

答案 0 :(得分:0)

由于没有人回答,所以我离开了片刻,然后再试一次。现在我完成了它。

我设置了自动行获取和自动行处理功能,但同时禁用了这两个功能,出于某种原因,必须存在自动行处理功能,以便您可以将显示图像和文件浏览的源用作该列。

然后,我将浏览文件设置为加载到apex_application_temp_files中。 并设置一个要在页面提交时执行的过程(但在自动行处理之后,即使该过程被禁用且不重要)。该过程执行以下代码:

BEGIN
  UPDATE MY_TABLE
     SET MY_IMAGE = (SELECT blob_content
                   FROM apex_application_temp_files
                  WHERE name = :FILE_BROWSER_ITEM)
   WHERE id = :ID;
END;

然后我通过一个按钮执行页面提交,其中操作页面提交和数据库操作为SQL UPDATE操作。

我猜我所做的事情和设置的事情都没有关系,但是我不敢将它们移除,因为担心会破坏狗屎。我在这里描述的最终结果对我有用,如果您偶然发现了这个,那么您可以尝试一下,我希望它也对您有用,您可以尝试删除一些禁用的东西,看看它是否仍然有效。