Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 从firefox打开硬盘上的直接文件(文件://)_Html_Security_Firefox_Web Applications - Fatal编程技术网

Html 从firefox打开硬盘上的直接文件(文件://)

Html 从firefox打开硬盘上的直接文件(文件://),html,security,firefox,web-applications,Html,Security,Firefox,Web Applications,我有一个为自己创建的小型php系统。该系统包含一些.doc和.docx文件文档。我希望能够从浏览器直接打开它们,而不是下载它们 我创建了一个链接: 但是FireFox没有打开链接。而href=”http://localhost/myfile.docx“工作正常-我可以下载文件 你知道我该怎么做吗? 可能会更改firfox选项/安全设置中的某些内容? 如果你在做,有没有机会在IE8中做呢 谢谢。您使用了哪种语法?例如c:/path/to/file.ext的正确语法应该是file:///c:/pa

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

我创建了一个链接:
但是FireFox没有打开链接。而
href=”http://localhost/myfile.docx“
工作正常-我可以下载文件

你知道我该怎么做吗? 可能会更改firfox选项/安全设置中的某些内容? 如果你在做,有没有机会在IE8中做呢

谢谢。

您使用了哪种语法?例如
c:/path/to/file.ext的正确语法应该是
file:///c:/path/to/file.ext
编辑:不再相关,因为OP已将其问题编辑为包含语法


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

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


有一个解决方法(本质上不安全,需要小心处理),您可以注册一个自定义协议,如中所述

虽然我仍然认为这是一个编程问题,但这里给出了答案:

Firefox和IE8都支持

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

file://localhost/c|/WINDOWS/clock.avi
file:///c|/WINDOWS/clock.avi
file://localhost/c:/WINDOWS/clock.avi
file:///c:/WINDOWS/clock.avi

而最后一个是最明显和最重要的 人类可读,第一个是 最完整和正确的一个

显然(来自同一个url):

Mozilla浏览器拒绝跟踪使用HTTP协议获取的页面上的文件URL

但是:

可以将Mozilla浏览器配置为覆盖此安全限制,如Mozillazine的“”中所述


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

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


希望这能有所帮助。

我使用了symlink for windows,通过创建symlink将该文件添加到了我的资源文件夹中。 如何为windows创建此处显示的符号链接

这对我来说很有效,但我也遇到了同样的问题。
干杯

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

另存为open.php

“pfad”是本地Webroot下面的路径(在我的例子中是customer文件夹) 当然,“文件”是我想要打开的文件

我这样称呼它:……href=“open.php?pfad=&file=”


如果两个参数都是URL编码的

这是一个编程问题吗???在我看来,你选择了完全错误的技术来做你想做的事情。尝试一些更适合桌面开发的东西。我来这里是因为同样的问题,因为直到最近我才能够完成这里的要求,解决方案是按照本页上的说明进行:简而言之,您需要创建一个user.js文件,并进行一些配置更改。我认为这些策略非常危险,因此不能使用about:config设置它们。好吧,这是几个月前才出现的情况,在上周我尝试了,现在我得到了与chrome相同的本地文件行为…即你可以在一个内置的文件浏览器的选项卡中浏览文件,如果你点击它们,文件将被下载。为什么会有人想下载一个本地文件?!这些安全设置通常用于内联网的优势,人们习惯于使用本地/网络文件系统和web编程,因为它们简单、熟悉,我们正试图慢慢地吸引人们。因此,如果有人想办法解决这个最新的“有用”更新,请告诉我们。我更新了我的问题,以表明我使用了以下语法:
file:///c:/path/to/file.ext
。它在这里工作正常。你的问题在别的地方。要么文件不在您认为的位置,要么Firefox实际上正在用它进行阻塞。如果你能确保最后一个是这样的话,考虑搬到SuffuServer,因为这与编程无关。
$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));