4

在 HTML 中,如何链接到浏览器只能下载而不能查看的文件?例如,假设我有一个 zip 文件my-program.zip。我希望我网站的访问者在单击链接时能够下载该文件。链接如下所示:下载我的程序。在我的网络服务器上,HTML 文件和 zip 文件位于同一目录中,因此 zip 文件的相对路径就是它的文件名。

但是如果我只是链接到带有<a href="my-program.zip">标签的文件,浏览器将无法识别该链接,对吧?因为浏览器无法打开 zip 文件。那么链接到它的正确方法是什么?

4

1 回答 1

16

实际上,您的示例链接到文件的正确方法:

<a href="my-program.zip">download my program</a>

您永远无法确定浏览器无法查看文件。您只需链接到它;由浏览器来做他们认为最好的事情——显示、下载或做其他事情。不用担心; 浏览器通常会做正确的事情。

这遵循了网络的原则,即您不知道浏览器将如何处理您发送给它的文件和页面。您提到了一个 ZIP 文件,但想想 PDF 文件。它们就像一个 ZIP 文件:它们不是 HTML,它们不是为浏览器制作的,浏览器可能会下载它。但是有一些插件,例如Adob​​e PDF ReaderSchubert 的 PDF 浏览器插件,可以直接在浏览器中显示 PDF 文件的内容。同样,假设浏览器可能有一个 ZIP 文件查看器——它可能会在浏览器中向用户显示 ZIP 文件的内容,并让用户决定在哪里提取这些内容。

大多数浏览器没有描述的假设 ZIP 文件查看器,因此文件只会下载,就像您想要的那样。但这并不重要。只需写下您的链接,一切都会好起来的。

除了立即查看文件或下载文件之外,浏览器还可以做其他事情。它还可以询问用户是否要下载文件。或者它可以开始下载文件,检测其中的病毒,然后立即将其删除。关键是,这取决于浏览器对文件的处理方式。

请注意,此政策是相反的。您的 HTML 页面在浏览器中看起来就像文件一样——它们都是“资源”。“资源”是“URL”中的“R”。当您通过访问 URL 访问 HTML 页面时,浏览器会认为“这是一个 HTML 资源。我该怎么办?哦,我可以在主窗口中显示它——我会这样做的。” 这与单击 URL 链接后下载 ZIP 文件的过程相同,它认为“这是一个 ZIP 资源。我该怎么办?我无法显示它——我想我会开始下载它并打开下载窗口,这样用户就可以看到发生了什么。” 如果您要求,大多数浏览器甚至允许您像下载文件一样下载页面的 HTML。

如果您的文件有多种格式,并且想让浏览器选择它可以查看的最佳格式,那么您可以使用HTTP Accept 标头设置系统。例如,如果您同时拥有my-program的 ZIP 和 RAR 版本,那么您可以制作它以便您链接到 justmy-program并且浏览器选择它最喜欢的版本。但是为此的设置可能很复杂,并且这种系统通常不需要仅用于文件下载。Accept 标头通常用于获取浏览器要查看的内容的正确版本——例如,浏览器可能会选择 MP4 视频文件而不是 WMV 视频文件,因为它没有任何可以播放嵌入式 WMV 的编解码器视频。


如果您想强制浏览器下载文件,即使浏览器可以自行查看文件,请参阅此问题

于 2012-06-28T20:28:38.460 回答