用户单击链接时如何强制“另存为”选项

Posted

技术标签:

【中文标题】用户单击链接时如何强制“另存为”选项【英文标题】:How can I force a "save as" option when the user clicks a link 【发布时间】:2011-12-08 10:28:06 【问题描述】:

我的网页上有一个 PDF 链接,我想知道是否可以随时询问用户是否要下载 PDF 或在新窗口中打开它。这可能吗?我意识到人们不希望 PDF 自动下载,但是 2 个链接或一个选项会很棒。

互联网上有很多关于此的文档,有些人甚至说我必须拥有 php,而这在我使用的服务器上是不可能的。

我需要一个 javascript、jQuery 解决方案或替代建议。我知道的并不多。

非常感谢您阅读本文,希望它有意义。

一切顺利! T.

【问题讨论】:

【参考方案1】:

它可以完成,但不能在客户端 javascript 中完成。如果您有一个提供文件的服务器端脚本,它可以发送一个Content-Disposition: attachment 标头以及响应。这将在浏览器中触发另存为对话框。

如果它们是静态文件,您还可以更改服务器的配置。对于 Apache,请使用 FilesMatch 指令。这里有一个很好的 PDF 文件示例:

http://www.thingy-ma-jig.co.uk/comment/7045

【讨论】:

您好,如果我使用此选项,是否必须指定此文件的名称?它是动态生成的...感谢您的出色回答:) 您不必这样做,尽管有可能。除了此标头之外,您还可以指定 filename 标头。您在此处指定的名称是浏览器将在另存为对话框中建议的名称。该名称不一定必须与服务器上的名称相匹配。更好的是:服务器上的磁盘上甚至不必有 pdf 文件。可以生成内容并将其发送到带有文件名标头的客户端,而服务器上永远不会有真正的 pdf 文件。 添加了一点关于 FilesMatch 指令的内容。

以上是关于用户单击链接时如何强制“另存为”选项的主要内容,如果未能解决你的问题,请参考以下文章

强制打开“另存为...”弹出窗口在文本链接处打开单击以获取 HTML 中的 PDF

如何在单击链接时触发另存为弹出窗口?具体来说,我如何触发 MIME 类型的变化?

有啥方法可以“模拟”右键单击另存为命令或使用 JavaScript 在浏览器中强制下载文件?

我想在用户右键单击时更改另存为对话框文件名

html 表单生成链接。当您需要右键单击并“目标另存为”或制作JavaScript书签时非常有用。

如何在不离开 php 页面的情况下强制保存另存为对话框?