如何在 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 中调整安装脚本?