2010-01-27 84 views
6

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

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

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

谢谢。

+0

这是一个编程问题? ?? – 2010-01-27 16:34:30

+0

听起来像你选择绝对错误的技术来做你想做的事。尝试一些更适合桌面开发的东西。 – NotMe 2010-01-27 16:55:08

+0

我在这里是因为同一个问题,因为直到最近我才能够做到这里所要求的,解决方案是遵循此页上的说明:http://kb.mozillazine.org/Links_to_local_pages_don't_work#Disabling_the_Security_Check总之,您需要创建一个user.js文件,并对其进行一些配置更改。我认为这些政策足够危险,您无法使用about:config进行设置。那是几个月前才出现的情况,在上个星期我尝试了,现在我得到了与chrome相同的本地文件行为...... – Quaternion 2015-10-01 16:18:09

回答

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

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

显然(来自同一个URL):

Mozilla浏览器拒绝跟随一个页面,它已经与HTTP协议拿来文件的URL。

但:

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

1

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

请注意,如果文件存储在服务器机器上,而服务器机器本身不是机器,而是客户端机器(运行Web浏览器的机器),则完全不起作用。

+0

我更新了我的问题,表明我使用了这种语法:'file:/// c:/ path/to/file.ext'。 – aviv 2010-01-27 16:40:20

+0

它在这里工作正常。你的问题在别的地方。文件不在你认为的位置,或者Firefox实际上阻止了这一点。如果你能确保最后的情况,考虑转移到superuser.com,因为这与编程无关。 – BalusC 2010-01-27 16:57:09

2

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

有一个解决方法(明显不安全并且要小心处理),您可以注册一个自定义协议,如this question中所述。

0

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

但是,如果您使用的是IIS Express,则必须通过更新"applicationhost.config"文件来手动添加虚拟目录。看看这个链接关于如何设置的更多细节。

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

希望这有助于。

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 = < my_path的> &文件= <the_file>”

其中两个参数都进行了urlencoded