解决火狐3与IE浏览器无法获取文件全路径的问题
"火狐和IE浏览器在高版本中出于安全考虑不再显示文件的全路径,这给一些需要完整路径的SSH开发工作带来困扰。本文档提供了一个JavaScript函数`readFileFirefox`,用于解决火狐浏览器下获取文件全路径的问题。" 在现代网络环境中,浏览器对用户隐私和安全性的保护越来越严格。火狐(Firefox)和Internet Explorer(IE)等高版本浏览器不再显示或允许访问文件选择器中的完整文件路径,这是因为暴露全路径可能泄露用户的敏感信息。例如,一个恶意网站可以通过这种方式获取到用户的文件系统结构,从而可能引发安全问题。 在SSH开发或者其他需要上传文件并验证其完整路径的应用中,这种限制可能会造成不便。为了应对这个问题,我们可以采用一些技术手段来解决。例如,针对火狐浏览器,可以通过使用JavaScript和Mozilla的XPCOM(跨平台组件对象模型)来获取文件的全路径。 在提供的代码片段中,定义了一个名为`readFileFirefox`的JavaScript函数,它首先检查浏览器是否为火狐。如果是,它尝试启用`netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")`,这是一个特权管理器,允许JavaScript访问本地资源。如果这个权限没有被授予,函数会弹出一个警告,提示用户如何在火狐的配置中开启该权限。 接下来,代码创建了一个`nsILocalFile`接口的实例,这是火狐提供的用于操作本地文件的对象。通过设置`fileBrowser.value`为选定文件的输入值,可以获取到文件名。然后,使用这个接口尝试访问文件的完整路径。这样,即使在默认禁止访问全路径的环境下,也可以实现获取文件路径的需求。 需要注意的是,这种方法涉及到浏览器的高级特性和安全权限,可能会引起用户的警觉,因此在实际应用中应当谨慎处理,确保只在必要的场景下使用,并充分告知用户风险。对于IE浏览器,通常也有类似的解决方法,但代码未在描述中给出。 解决火狐和IE浏览器无法显示文件全路径的问题,需要利用特定的浏览器API和权限管理,同时要充分考虑用户隐私和安全性,避免滥用这些功能。在进行此类开发时,应尽可能遵循最新的浏览器安全标准和最佳实践。
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>Untitled Page</title>
<script type="text/javascript">
function readFile(fileBrowser) {
if (navigator.userAgent.indexOf("MSIE")!=-1) //判断是否是ie浏览器
readFileIE(fileBrowser);
else if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Mozilla")!=-1) //判断是否是火狐浏览器
readFileFirefox(fileBrowser);
else
alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
}
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择 New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件');
return;
}
var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath( fileName.replace(/\//g, "\\\\") );
}
catch(e) {
if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Ansys Comsol实现力磁耦合仿真及其在电磁无损检测中的应用
- 西门子数控系统调试与配置实战案例教程
- ELM多输出拟合预测模型:简易Matlab实现指南
- 一维光子晶体的Comsol能带拓扑分析研究
- Borland-5技术资料压缩包分享
- Borland 6 技术资料分享包
- UE5压缩包处理技巧与D文件介绍
- 机器学习笔记:深入探讨中心极限定理
- ProE使用技巧及文件管理方法分享
- 增量式百度图片爬虫程序修复版发布
- Emlog屏蔽用户IP黑名单插件:自定义跳转与评论限制
- 安装Prometheus 2.2.1所需镜像及配置指南
- WinRARChan主题包:个性化你的压缩软件
- Neo4j关系数据映射转换测试样例集
- 安装heapster-grafana-amd64-v5-0-4所需镜像介绍
- DVB-C语言深度解析TS流