通过链接打开文件


Open files via links

是否可以通过html在本地驱动器上打开文件?我尝试了以下方式:与脚本位于同一映射中的文件的<a href='filename.ext'>link</a>。这是有效的,但它只下载文件(我使用的是mdb文件,所以它不会像图片一样在网络浏览器中打开)。

当我链接到例如<a href='file://c:'file.ext'>link</a>或没有文件时://什么都不会发生。是否可以正确链接到文件以打开它们,而不仅仅是下载它们?

提前感谢!

如果它在您的机器上,这是可能的。

您要做的是用您想要打开的文件扩展名注册一个协议。在您的情况下,.mdb将是MS Access数据库文件。

如果你想点击浏览器中的链接并在MS Access中打开文件,那么你必须执行以下操作:

<a href="your_protocol://c:'path'to'file.mdb">Open File</a>

然后,您必须在计算机上注册"your_procol"协议。

REGEDIT4
[HKEY_CLASSES_ROOT'your_protocol]
@="URL:your_protocol Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT'your_protocol'shell]
[HKEY_CLASSES_ROOT'your_protocol'shell'open]
[HKEY_CLASSES_ROOT'your_protocol'shell'open'command]
@="'"C:''Program Files''Application''program.exe'" '"%1'"" 

将"your_procol"替换为您选择的任意名称,编辑注册表并链接您的文件,如示例所示。

编号'Open与download涉及服务器返回的Content-Disposition HTTP标头。当您打开本地文件时,它不是来自web服务器,因此您无法更改标头/它们不存在。

如果引用的HTML文档在本地驱动器上,则相对URL将引用本地文件,例如<a href='filename.ext'>link</a>将引用同一文件夹中的文件。然而,浏览器随后会获得指定媒体类型(如text/html或image.gif)的HTTP标头,因此他们需要应用一些启发式方法来猜测该如何处理它,或者在系统中应用绑定,或者只提供"另存为"对话框(这是浏览器在不知道或猜测媒体类型的情况下真正可以做的唯一事情)。

然而,通常情况下,只要您使用常见的文件名后缀(如.html或.gif.),这将起作用

如果引用文档在服务器上,情况会有所不同,但理论上可以使用file:scheme引用本地文件,但其效果完全取决于系统。示例<a href='file://c:'file.ext'>link</a>的语法格式不正确(尽管有些浏览器可能接受它),因为URL中不允许使用反斜杠"''"。原则上,使用<a href='file://c:/file.ext'>link</a>是可行的,在Web的早期,它确实可行,以防用户的系统碰巧有一个文件可以使用路径名c:''file.ext访问(系统可能映射到c:''file.ext)。

但浏览器通常已经停止支持file:scheme,可能是出于假定的安全原因。当然,当使用file:URL时,不会将任何信息直接发送到任何服务器,但人们认为这可能是间接的安全威胁。此外,file:URL从一开始就非常有限。(它们有时在本地网络中用于链接到不充当HTTP服务器的本地网络服务器上的文件。)