首页 > 解决方案 > Oracle Apex如何将图像存储在数据库表中

问题描述

在 apex 中,我需要将队友的图像保存在一个表格中,该表格稍后将用于 html 邮件格式的应用程序。我有列empployee_name 和employee_photo 的员工表。在 blob 的employee_photo 列中推送数据的最佳方法是什么?

我可以通过在那里上传图像来使用静态文件吗?如果是的话,我该如何将它们引用到我的专栏中?

我搜索了谷歌,但大多数方法/解释对于像我这样的新手来说太复杂了。

标签: bloboracle-apex

解决方案


那是一件有趣的事情,确实应该变得更简单一些。

从记忆中,我使用的方法是这样的:

将页面项目设置为静态应用程序文件(预设之一),然后运行一些 PLSQL 代码,从 id = :P1_ITEM 的静态应用程序文件中获取 blob,然后将其推送到您想要的实际表中。

如果您还没有像这样设置它,您可能希望将员工表作为带有表格的报告,以便您可以单击员工并获得一个漂亮的大表格,您可以在其中输入数据,并且设置您将添加图片的页面项目。

我希望你能找到自己的方法,如果你尝试了,但我的指示不够好,请告诉我,当我可以访问我的 APEX 服务器时,我会回复你。

编辑:更详细的说明:

为了上传一个人的图像,您可能需要一个带有表单页面(或更确切地说是页面)的报告,这些可以使用向导轻松创建,所以我不会解释它们。

然后在表单页面上,您将需要一个“文件浏览”类型的页面项目,在此示例中我们将其称为 P1_FILE_BROWSE。我们将此项设置为存储类型“Table APEX_APPLICATION_TEMP_FILES”。现在这意味着当您将某些内容上传到此项目并提交页面时,它将存储在此表中的 ID 下,该 ID 存储在 P1_FILE_BROWSE 中。

所以现在我们将在提交后创建一个流程,看起来像这样:

DECLARE
  a_filename VARCHAR2(400);
  a_mime_type VARCHAR2(255);
  a_blob_content BLOB;
BEGIN
  select FILENAME, MIME_TYPE, BLOB_CONTENT  
    into a_filename, a_mime_type, a_blob_content
    from apex_application_temp_files  
   where name = :P1_FILE_BROWSE;
  
  UPDATE EMPLOYEES
    SET filename = a_filename,
        mime_type = a_mime_type, 
        blob_content = a_blob_content
  WHERE id_user = :P1_ID_USER
END;

如果我们从头开始,首先我们声明图像的三个变量,它的名称,它的 mime 类型(这个过程对于 word 文档或视频什么的都是一样的,mime 类型告诉我们这个文件是什么),及其 blob 内容,即实际图像。

然后我们从最初存储图像的 APEX_APPLICATION_TEMP_FILES 中填充这些变量,然后将这些变量放入员工表中。

与 APEX 的所有事情一样,还有更多可能,并且有多种方法可以做到这一点,这恰好是我习惯的一种。所以玩这个让它工作,祝你好运。


推荐阅读