如何在以 Web 服务为源的经典报表中创建下载 BLOB 列(使用 SQL)

How to make a Download BLOB column in Classic Report that has a Web service as Source (using SQL)

我正在尝试在 Oracle Apex (v.19.2) 中使用我自己的文件 REST 服务,在 WITH_PLSQL 调用中使用 apex_web_service.make_rest_request 作为经典报告源。

我的 POST 和 GET REST 调用工作正常,但我未能在我的经典报告中为 'Download BLOB' 列定义参数,以便用户可以下载文件。

我目前不知道该怎么做...

(我对使用大量其他 ORDS REST 服务的所有其他进程没有任何问题,问题只是文件下载)。提前致谢!

经典(或交互式)报表中的声明式 BLOB 下载不适用于 Web 源模块之上的报表。原因是 BLOB 首先需要下载到 APEX 引擎,然后再从那里下载到您的浏览器——这是非常低效的。

在大多数情况下,有单独的 REST 端点可以下载实际文件内容。如果可以从浏览器访问这些端点,我会简单地构建一个 Link 列,其中构建了 link 到 "file download" 按钮。当最终用户单击 link 时,浏览器会绕过 APEX 下载文件。

如果这不起作用,您需要将文件下载到 APEX,然后从那里下载到浏览器,您将需要使用自定义 PL/SQL 代码。这篇文章很好地说明了这一点(请参阅 "Download" 部分): https://blogs.oracle.com/oraclemagazine/better-file-storage-in-oracle-cloud

希望对您有所帮助