从 firefox (file:///) 打开硬盘驱动器上的直接文件
Posted
技术标签:
【中文标题】从 firefox (file:///) 打开硬盘驱动器上的直接文件【英文标题】:Open a direct file on the hard drive from firefox (file:///) 【发布时间】:2011-01-10 01:16:26 【问题描述】:我有一个为自己创建的小型 php 系统。该系统包含一些 .doc 和 .docx 文件文档。我希望能够直接从浏览器打开它们而不是下载它们。
我创建了一个链接:
<a href="file:///c:/mysite/myfile.docx">myfile</a>
但 FireFox 不会打开链接。虽然 href="http://localhost/myfile.docx"
工作正常 - 它让我可以下载文件。
任何想法我该怎么做? 也许更改 firfox 选项/安全设置中的某些内容? 如果你在这方面,有没有机会在 IE8 中做到这一点?
谢谢。
【问题讨论】:
这是一道编程题??? 听起来你选择了绝对错误的技术来做你想做的事。尝试一些更适合桌面开发的东西。 我来这里是因为同样的问题,因为直到最近我才能够做这里要求的事情,解决方案是按照此页面上的说明进行操作:@ 987654321@ 简而言之,您需要创建一个带有几个配置更改的 user.js 文件。我认为这些策略被认为足够危险,以至于您无法使用 about:config 设置它们。好吧,这只是几个月前的情况,在上周我尝试过,现在我得到了与 chrome 相同的本地文件行为...... 即您可以在选项卡中的内置文件资源管理器中浏览文件,如果您单击文件,文件将下载。为什么会有人想要下载本地文件?!这些安全设置通常用于 Intranet 优势,人们习惯于使用本地/网络文件系统,并且 Web 编程简单而熟悉,我们正试图慢慢将人们带过来。因此,如果有人设法解决这个最新的“有用”更新,请告诉我们。 【参考方案1】:虽然我仍然认为这是一个编程问题,但在这里得到了回答: 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
file://localhost/c|/WINDOWS/clock.avi file:///c|/WINDOWS/clock.avi 文件://localhost/c:/WINDOWS/clock.avi file:///c:/WINDOWS/clock.avi
虽然最后一个是最明显和最 人类可读,第一个是 最完整和最正确的一个。
显然(来自同一个网址):
Mozilla 浏览器拒绝跟踪使用 HTTP 协议获取的页面上的文件 URL。
但是:
Mozilla 浏览器可以配置为覆盖此安全限制,详见 Mozillazine 的“Links to Local Pages Don't Work”。
【讨论】:
【参考方案2】:很遗憾,由于安全限制,无法在 Firefox 中访问本地文件。据我所知(我自己在这里多次问过)甚至不可能通过配置设置或类似设置来允许选择站点。
有一种解决方法(潜在地不安全,需要小心处理),您可以注册一个自定义协议,如this question 中所述。
【讨论】:
【参考方案3】:你使用了哪种语法?例如的正确语法 编辑: 不再相关,因为 OP 已编辑他的问题以包含语法。c:/path/to/file.ext
本来是 file:///c:/path/to/file.ext
。
请注意,如果文件存储在服务器计算机上,而服务器计算机又是 物理上不同的计算机,而不是客户端计算机(网络浏览器运行的地方),这根本不起作用。
【讨论】:
我更新了我的问题以表明我使用了以下语法:file:///c:/path/to/file.ext
。
这里工作正常。你的问题出在别的地方。文件不在您认为的位置,或者 Firefox 实际上正在阻止它。如果你能确保最后是这种情况,请考虑转移到 superuser.com,因为这与编程无关。【参考方案4】:
我使用 Windows 的符号链接通过创建符号链接将该文件添加到我的资源文件夹中。 如何为 Windows 创建此处显示的符号链接 http://www.sevenforums.com/tutorials/278262-mklink-create-use-links-windows.html
这对我有用,而同样的问题。 干杯!
【讨论】:
【参考方案5】:在尝试访问项目之外的文件时,安全限制是一个大问题。我建议(如果您使用的是 IIS 7+),是在 C 驱动器上包含您的文档的文件夹中创建一个虚拟目录。然后,您可以使用 VP 名称从 C 驱动器访问您的文件,主机/本地主机将包含在您的 url 中,而不是 "file:///"
。
但是,如果您使用的是 IIS Express,则必须通过更新 "applicationhost.config"
文件来手动添加虚拟目录。请查看此链接,了解有关如何设置的更多详细信息。
http://bhagirath-j-patel.blogspot.com/
希望这会有所帮助。
【讨论】:
【参考方案6】:我的工作代码通过 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=
其中两个参数都进行了urlencoded
【讨论】:
以上是关于从 firefox (file:///) 打开硬盘驱动器上的直接文件的主要内容,如果未能解决你的问题,请参考以下文章
firefox 错误 TypeError: console.log is not a function
Firefox 更新后无法使用 Selenium 打开浏览器
Firefox 更新后无法使用 Selenium 打开浏览器