You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apex 5.1报表无法显示数据库存储图片,显示字符串如何解决?

问题排查与解决方案

核心原因

Apex 5.1默认将报表列内容按纯文本解析,导致你生成的HTML字符串直接显示为文本而非渲染成图片。必须调整报表列的属性,让Apex识别并解析HTML内容。

步骤1:修改报表列显示属性

  1. 打开Apex 5.1的报表页面编辑界面
  2. 定位到PHOTO列的属性设置
  3. 在「列属性」的「显示」板块,将类型从默认的「文本」改为HTML表达式;或找到「Escape特殊字符」选项,设置为否
  4. 保存设置后刷新报表,图片即可正常渲染

步骤2:验证APEX_UTIL.GET_BLOB_FILE_SRC参数正确性

确认P46_PHOTO是对应页面上文件浏览项的正确标识:

  • 检查页面46(若P46为页面编号)是否存在名为P46_PHOTO的文件上传项,且该项绑定的表列是COM_ADVERT_TB.PHOTO
  • 若页面编号不符,替换为实际包含文件上传项的页面ID,格式为'P<页面号>_<项名>'

优化查询代码(可选)

原查询中GROUP BY子句重复了完整的DECODE表达式,冗余且易出错,可改用子查询重构简化代码:

SELECT 
  m.ID, 
  m.CATEGORY_ID,
  S.CATEGORY_NAME,
  e.name || ' ' || e.surname AS FULL_NAME,
  m.CONTACT_DETAILS,
  m.IS_ACTIVE,
  M.UPDATED_ON,
  m.UPDATED_BY,
  M.CREATED_ON,
  m.DESCRIPTION,
  r.REPLIES,
  CASE 
    WHEN NVL(DBMS_LOB.GETLENGTH(m.PHOTO), 0) > 0 THEN
      '<img onclick="javascript:showImage(this);" src="'||APEX_UTIL.GET_BLOB_FILE_SRC('P46_PHOTO', m.ID)||'" ALT="See full size" height="50" width="50" />'
    ELSE NULL
  END AS PHOTO
FROM COM_ADVERT_TB m
LEFT JOIN com_advertcategory_tb s ON m.category_id = s.category_id
LEFT JOIN (
  SELECT id, COUNT(id) AS REPLIES 
  FROM Com_replyadvert_tb 
  GROUP BY id
) r ON m.id = r.id
JOIN system_username_tb e ON UPPER(m.username) = UPPER(e.username)
WHERE m.created_on >= TO_DATE('01-01-2018 00:00:00', 'dd-mm-yyyy hh24:mi:ss')
ORDER BY m.created_on DESC

额外检查项

  • 确认页面的JavaScript中已正确定义showImage函数,避免点击图片无响应
  • 验证数据库PHOTO列存储的是有效的BLOB格式图片数据,无损坏情况

内容的提问来源于stack exchange,提问作者Misha Rukazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:12:40