【发布时间】:2020-09-17 22:07:15
【问题描述】:
我有一个“在08.17.168792378923879423789324789234789234789023478943829009872438723487990724490237842378947289379802323478923478974283923487943287937428978932478324789873924789324879034278978923478923478923470897890432879(1)png格式的屏幕快照2552018-09-10”和我的代码是使用命令链接以获得它调用的文件。这在 Chrome 中运行良好,但在 Safari 中却不行。 Safari 会更改路径 URL 中某些内容的文件名。
例如:url 是 localhost:8080/app/documents/771 所以这个文件被重命名为 771
Safari 14
铬
代码
<h:commandLink value="#{document.fileName}" ajax="false" immediate="true"
onclick="PrimeFaces.monitorDownload(PF('blockUIWV').show(), PF('blockUIWV').hide()); _paq.push(['trackEvent', 'Documents', 'Download document,'Download']);">
<p:fileDownload value="#{bean.downloadDocument(document.myDocument)}" />
</h:commandLink>
我看到 HTML5 有一个下载属性,所以我试图强制它。
代码
<h:commandLink value="#{document.filename}" ajax="false" immediate="true"
pt:download="#{document.filename}
onclick="PrimeFaces.monitorDownload(PF('blockUIWV').show(), PF('blockUIWV').hide()); _paq.push(['trackEvent', 'Documents', 'Download document,'Download']);">
<p:fileDownload value="#{bean.downloadDocument(document.myDocument)}" />
</h:commandLink>
即使进行了此更改,文件的名称也不正确。但现在名称是“文档”(我的网址的一部分)。 Safari 出了什么问题,我该如何解决?
环境
-
Primefaces 6.2
-
JSF 2
【问题讨论】:
-
首先要尝试的显而易见的事情是将 PrimeFaces 升级到最新版本。请参阅此提交,例如:github.com/primefaces/primefaces/commit/…
-
@JasperdeVries 不幸的是,这对我的团队来说并不容易,因为系统很大
-
@DanielaMorais 我觉得 Jasper 正在做一些他提到的修复,因为有很多关于它的错误。看起来其中包含“空格”和“括号”的文件名是一个问题,而您的示例两者都有。
-
你能检查一下Safari网络流量工具中的content-dispositon HTTP头吗?
标签: jsf primefaces safari