如何在 Oracle Apex 中“静态”指定 BLOB 下载的文件名?

Posted

技术标签:

【中文标题】如何在 Oracle Apex 中“静态”指定 BLOB 下载的文件名?【英文标题】:How to "statically" specify a filename for BLOB download in Oracle Apex? 【发布时间】:2014-11-01 13:33:26 【问题描述】:

我在 Oracle Apex 中使用“文件浏览...”类型的页面项。

我可以将文件上传到 BLOB 数据库列中,然后下载,这很棒。

但是,我无法指定下载的文件名。默认情况下,它只是称为“下载”,没有任何文件扩展名。

我知道我可以指定数据库列来保存文件名和其他元数据(如下所述:Use of BLOB type column in Oracle APEX)。但是,我宁愿避免在数据库中包含更多列,因为每一行的文件名都是相同的 - 这将是大量重复数据。

我想做的只是为文件浏览...页面项中的所有下载指定一个静态文件名。

可以吗?如果有,怎么做?

【问题讨论】:

你到底想做什么?更改存储在数据库中的文件的文件名?或者更改您稍后在 APEX 中显示的下载链接的名称? 我想更改浏览器实际下载的文件的(默认)名称。 我想在 Apex 4.1 中做类似的事情,但得出的结论是,唯一的方法是在页面加载后做一些 jQuery 技巧。就我而言,我认为这不值得。 【参考方案1】:

在您的文件所在的表上创建一个视图。此视图将显示相同的行和列,但还会使用静态字符串添加 mimetype、文件名等列。像这样的:

CREATE VIEW downloads_v AS
SELECT d.col1
,      d.col2
,      ...
,      d.colX
,      'myfile.ext' as filename
,      'Application/Octet-Stream' as mime_type
,      'utf8' as charcater_set
from   downloads d;

然后您在此视图而不是原始表格上创建您的顶点报告。 通过这种方式,您可以获得与将这些列添加到表中相同的功能,但可以避免浪费存储空间。

【讨论】:

不幸的是,我不是提问者;)

以上是关于如何在 Oracle Apex 中“静态”指定 BLOB 下载的文件名?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据替换字符串在 Oracle Apex 中调整安装脚本?

删除 Oracle Apex 交互式网格行操作

Oracle Apex - 更改图表标签

Oracle APEX - 数据库触发器中的 If 语句

如何仅使用 sql 在 apex oracle 的交互式网格中实现选择列表以及 oracle APEX 中可用的内容?

我如何知道我的数据库中是不是安装了 APEX_JSON?