【问题标题】:How do I link to a file to download that a browser can’t view?如何链接到浏览器无法查看的下载文件?
【发布时间】:2021-07-13 19:05:22
【问题描述】:

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

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

【问题讨论】:

  • 发帖和自答是因为我记得很多年前我开始学习 HTML 时就遇到过这个问题。

标签: html hyperlink download


【解决方案1】:

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

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

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

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

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

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

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

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


如果您想强制浏览器下载文件即使浏览器可能会自行查看文件,请参阅this question

【讨论】:

  • 回答自己没问题。像另一个人一样自言自语?有点奇怪xD
  • 我不确定我对 HTTP Accept 标头的解释是否正确;我没有用它太多。欢迎指正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 2021-10-20
  • 2019-08-24
相关资源
最近更新 更多