从firefox打开硬盘驱动器上的直接文件(file:///)

时间:2010-01-27 16:32:42

标签: html security firefox web-applications

我有一个为自己创建的小型php系统。该系统包含一些.doc和.docx文件。我希望能够直接从浏览器打开它们而不是下载它们。

我创建了一个链接:     <a href="file:///c:/mysite/myfile.docx">myfile</a> 但是FireFox没有打开链接。虽然href="http://localhost/myfile.docx"工作正常 - 它可以让我下载文件。

任何想法我该怎么做? 也许在firfox选项/安全设置中改变一些东西? 如果你在,它有没有机会在IE8中做到这一点?

感谢。

6 个答案:

答案 0 :(得分:5)

虽然我仍然认为这是一个编程问题,但在这里得到了回答: https://superuser.com/questions/103026/open-a-direct-file-on-the-hard-drive-from-firefox-file

Firefox和IE8都支持File URI scheme

  

以下是一些有效的示例   Windows系统,指的是相同的   文件c:\ WINDOWS \ clock.avi

     
    

文件://本地主机/ C | /WINDOWS/clock.avi
    文件:/// C | /WINDOWS/clock.avi
    文件://本地主机/ C:/WINDOWS/clock.avi
    文件:/// C:/WINDOWS/clock.avi

  
     

虽然最后一个是最明显的   人类可读,第一个是   最完整和正确的。

显然(来自同一个网址):

  

Mozilla浏览器拒绝在使用HTTP协议提取的网页上关注文件网址。

但:

  

Mozilla浏览器可以配置为覆盖此安全限制,详见Mozillazine的“Links to Local Pages Don't Work”。

答案 1 :(得分:2)

由于安全限制,无法在Firefox中访问本地文件。据我所知(我已经在这里反复询问过),甚至不可能通过配置设置或类似设置允许选择站点。

有一种解决方法(指责性不安全且需谨慎处理),您可以注册this question中概述的自定义协议。

答案 2 :(得分:1)

您使用了哪种语法?例如,正确的语法c:/path/to/file.ext本来是file:///c:/path/to/file.ext 编辑:不再相关,因为OP编辑了他的问题以包含语法。

请注意,如果文件存储在服务器计算机上,而该计算机依次是与物理上不同的计算机,而不是客户端计算机(运行webbrowser的位置),则这根本不起作用。

答案 3 :(得分:1)

我使用symlink for windows通过创建符号链接将该文件添加到我的资源文件夹中。 如何为windows创建此处显示的符号链接 http://www.sevenforums.com/tutorials/278262-mklink-create-use-links-windows.html

同样的问题对我有用。 干杯!

答案 4 :(得分:0)

尝试访问项目外的文件时,安全限制是一个大问题。我建议(如果您使用的是IIS 7+),就是在包含C驱动器上的文档的文件夹中创建一个虚拟目录。然后,您可以使用VP名称从C驱动器访问您的文件,主机/ localhost将包含在您的网址而不是"file:///"中。

但是,如果您使用的是IIS Express,则必须通过更新"applicationhost.config"文件手动添加虚拟目录。请查看此链接,了解有关如何设置的详细信息。

http://bhagirath-j-patel.blogspot.com/

希望这有帮助。

答案 5 :(得分:0)

我的工作代码,通过Firefox(51.0)和实际的Internet Explorer(11)打开本地上传的文件。

$pfad = trim(strip_tags(stripslashes(urldecode($_REQUEST['pfad']))));
$datei = trim(strip_tags(stripslashes(urldecode($_REQUEST['file']))));
exec ('start c:\\WINDOWS\\system32\\explorer.exe /select /seperate /n, /e, '.str_replace('/','\\',$pfad).utf8_decode($datei));

保存为open.php

“pfad”是本地Webroot(在我的客户文件夹中)的路径 而“文件”当然是我要打开的文件。

我这样称呼:... href =“open.php?pfad =&lt; my_path&gt;&amp; file =&lt; the_file&gt;”

其中两个参数都是urlencoded