如何在点击下载按钮时显示文件保存对话框框?

3

当单击PrimeFaces下载按钮时,我希望显示对话框以保存文件(选择要保存文件的路径)。我该如何实现?


那通常不是浏览器设置决定的吗?即如果您设置了默认下载位置,则不会收到提示。 - James Bassett
欢迎来到Stack Overflow!我们鼓励您研究问题。如果您已经尝试过某些方法,请将其添加到问题中 - 如果没有,请先研究和尝试您的问题,然后再回来。 - user647772
不知道在你的具体情况下是否适用,但是你可以在响应中设置 content-disposition HTTP 头为 attachment,以提示浏览器显示“另存为”对话框。请参阅 HTTP 规范的 19.5.1 Content-Disposition - Xavi López
@Xavi:这是通过PrimeFaces文件下载标签的contentDisposition属性进行控制的。 - BalusC
很好,目前不熟悉JSF,但我已经假定任何体面的框架都会有提供它的方法。 - Xavi López
1个回答

9

PrimeFaces的<p:fileDownload>标签提供了contentDisposition属性,您可以将其设置为inline(内联显示文件)或attachment(弹出“另存为”对话框)。

<p:fileDownload ... contentDisposition="attachment" />

然而,默认情况下它已经默认为attachment!你不需要显式地指定它。因此,你的具体问题是由你的网络浏览器本身引起的。大多数现代网络浏览器可以配置为在检索到特定内容类型的文件时采取特定的默认操作。显然,你的配置总是内联显示文件,而不管其内容设置如何。不清楚你使用的是哪种网络浏览器,但 Firefox 处理方式是最常见且初学者最容易混淆的方式,所以我将针对其回答。
例如,在 Firefox 中下载 PDF 文件时,它默认会显示一个带有 2 个选项的对话框:在 Adobe 中内联打开它或将其保存到磁盘。以下是一个复选框来记住默认操作。
显然,你曾经勾选过该选项,同时设置为内联打开文件。这样,Firefox 就不会再问你是打开还是保存了。
你可以通过 工具 > 选项 > 应用程序 进行重新配置。

抱歉,我正在使用contentDisposition="attachment",但在Chrome和Firefox中都无法正常工作。 - Arunprasad
读懂答案了吗? :) 请尝试阅读整段文字,而不仅仅是看第一个代码块。 - BalusC
在Chrome设置中-->显示高级设置-->下载-->选择在下载每个文件之前询问保存位置 - Arunprasad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接