通过链接打开文件

时间:2012-01-18 11:05:44

标签: php html file hyperlink local

是否可以通过html在本地驱动器上打开文件?我尝试过这样的事情: <a href='filename.ext'>link</a>表示与脚本位于同一地图中的文件。这是有效的,但它只下载文件(我使用mdb文件,所以它不会像web一样在webbrowser中打开)。

当我链接到ie <a href='file://c:\file.ext'>link</a>或只是没有文件时://没有任何反应。是否可以正确链接到文件以打开它们而不只是下载它们?

提前致谢!

3 个答案:

答案 0 :(得分:1)

它可能在你的机器上。

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

如果要单击浏览器中的链接并在MS Access中打开该文件,则必须执行以下操作:

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

然后你必须在你的电脑上注册“your_protocol”协议。

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_protocol”替换为您选择的任意名称,编辑注册表并链接您的文件,如示例所示。

答案 1 :(得分:0)

没有。 “打开”与“下载”涉及服务器返回的Content-Disposition HTTP标头。当您打开本地文件时,它不是来自Web服务器,因此您无法更改标题/它们不存在。

答案 2 :(得分:0)

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

但是,通常情况下,只要您使用常见的文件名后缀,例如.html或.gif,就可以使用。

如果引用文档在服务器上,则情况有所不同,但理论上您可以使用文件: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。

但是浏览器一般都停止支持文件:scheme,大概是出于安全原因。当然,当使用文件:URL时,没有信息直接发送到任何服务器,但人们认为它可能是间接的安全威胁。而且,文件:URL从一开始就非常有用。 (它们有时在本地网络中用于链接到本地​​网络服务器上不作为HTTP服务器的文件。)