在HTML中,如何链接到浏览器只能下载的文件,而不是视图?例如,假设我有一个zip文件, my-program.zip 。我希望我的网站访问者在点击链接时能够下载该文件。链接如下所示:download my program。在我的网络服务器上,HTML文件和zip文件位于同一目录中,因此zip文件的相对路径就是文件名。
但是,如果我只使用<a href="my-program.zip">
标记链接到该文件,则浏览器无法识别该链接,对吧?因为浏览器无法打开zip文件。那么链接到它的正确方法是什么?
答案 0 :(得分:11)
实际上,您的示例 是链接到该文件的正确方法:
<a href="my-program.zip">download my program</a>
您永远无法确定浏览器无法查看文件。你只是链接到它;它取决于浏览器做他们认为最好的事情 - 显示,下载或做其他事情。别担心;浏览器通常会做正确的事情。
这遵循网络原则,您不知道浏览器将对您发送的文件和页面执行什么操作。您提到了一个ZIP文件,但想到了PDF文件。它们就像一个ZIP文件:它们不是HTML,它们不是用于浏览器,浏览器可能会下载它。但是有一些插件,例如Adobe PDF Reader和Schubert’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标头通常用于获取浏览器 view 的正确版本 - 例如,浏览器可能会选择WMV视频文件上的MP4视频文件,因为它没有任何可以播放嵌入式WMV视频的编解码器。
如果您想强制浏览器下载文件,即使浏览器可以自行查看,请参阅this question。