Ror*_*ane 11
实际上,您的示例是链接到该文件的正确方法:
<a href="my-program.zip">download my program</a>
Run Code Online (Sandbox Code Playgroud)
您永远无法确定浏览器无法查看文件.你只是链接到它; 它取决于浏览器做他们认为最好的事情 - 显示,下载或做其他事情.别担心; 浏览器通常会做正确的事情.
这遵循Web的原则,您不知道浏览器将对您发送的文件和页面执行什么操作.您提到了一个ZIP文件,但想到了PDF文件.它们就像一个ZIP文件:它们不是HTML,它们不是用于浏览器,浏览器可能会下载它.但是有一些插件,如Adobe PDF Reader和Schubert的PDF Browser Plugin,可以直接在浏览器中显示PDF文件的内容.同样,假设浏览器可能有一个ZIP文件查看器 - 它可能会向用户显示浏览器中ZIP文件的内容,并让用户决定在哪里提取这些内容.
大多数浏览器没有描述假设的ZIP文件查看器,因此文件只会下载,就像您想要的那样.但这并不重要; 只需写下您的链接,一切都会好起来的.
浏览器可以执行除查看文件或立即下载文件之外的其他操作.它还可以询问用户是否要下载文件.或者它可以开始下载文件,检测其中的病毒,并立即删除它.关键是,它取决于浏览器对文件的作用.
请注意,此策略是另一种方式.您的HTML页面看起来就像文件看起来一样 - 它们都是"资源"."资源"是"URL"中的"R".当您通过访问URL访问HTML页面时,浏览器会认为"这是一个HTML资源.我该怎么办?哦,我可以在主窗口中显示它 - 我会这样做."这与点击链接到其URL后下载ZIP文件的过程相同,它认为"这是一个ZIP资源.我该怎么办?我无法显示它 - 我想我会开始下载它并打开下载窗口,以便用户可以看到发生了什么."大多数浏览器甚至允许你像文件一样下载页面的HTML,如果你要求它.
如果您有多种格式的文件,并希望让浏览器选择它可以查看的最佳格式,那么您可以使用HTTP Accept标头设置系统.例如,如果您同时拥有我的程序的ZIP和RAR版本,那么您可以将其设置为只链接到my-program浏览器并且浏览器选择它最喜欢的版本.但是这样的设置可能很复杂,而且通常不需要这种系统来进行文件下载.Accept标头通常用于获取浏览器要查看的内容的正确版本- 例如,浏览器可能会选择WMV视频文件上的MP4视频文件,因为它没有任何可以播放嵌入式WMV的编解码器视频.
如果您想强制浏览器下载文件,即使浏览器可能自己查看它,请参阅此问题.