`

兼容IE和firefox,获得上传文件绝对路径

    博客分类:
  • js
 
阅读更多
firefox为了浏览器安全性,不能获得上传文件绝对路径。。document.getElementById('file').value获得的是文件名
在ie里获得的却是绝对路径
<!doctype html>
<script>
function readFile(fileBrowser) {
    if (navigator.userAgent.indexOf("MSIE") != -1) {
        return getFilePath(fileBrowser);
    } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
        return getFilePathWithFF(fileBrowser);
    } else {
        return;
    }
}
function getFilePath(fileBrowser) {
    if (navigator.userAgent.indexOf("MSIE") != -1) {
        fileBrowser.select();
        return document.selection.createRange().text;
    } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) 
return this.getFilePathWithFF(fileBrowser);
    else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
};
function getFilePathWithFF(fileBrowser) {
    try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    } catch(e) {
        alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ;[2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
        return;
    }
    var fileName = fileBrowser.value;
    alert(fileName );
    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.");
        return;
    }
alert(file.path);
    return file.path;
}
</script>
<html>
	<head>
		<meta charset="gbk">      
	</head>
	<body>
<input type="file" id="file"></input> 
<input type="button" onclick="readFile(document.getElementById('file'))" value="上传"></input> 
        
</body>
</html>


document.selection只有IE支持,
window.getSelection()也只有FireFox和Safari支持,都不是标准语法。

注解
火狐
用window.getSelection().toString()可以获取到选中的文本,但是(input标签的)文本框无效。(所以上面不能用这种方法获得值)
但可以在触发input相应事件时,访问document.activeElement获得活动的组件,再用value获得值。。。(type=file时无效)
ie用MyInput.document.selection.createRange().text可以获取到文本框的文本
之前必须调用myInput.select()

上面的一些方法和属性不太标准的用法、、像selection之类的、。。
下面简化下
function readFile(fileBrowser) {
    if (navigator.userAgent.indexOf("MSIE") != -1) {
        return getFilePath(fileBrowser);
    } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
        return getFilePathWithFF(fileBrowser);
    } else {
        return;
    }
}
function getFilePath(fileBrowser) {
	alert("ie");
	alert(fileBrowser.value);
      
    
}
function getFilePathWithFF(fileBrowser) {
    try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    } catch(e) {
        alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
        return;
    }
    var fileName = fileBrowser.value;
    alert("firefox");
    alert( fileName);
}

分享到:
评论

相关推荐

    js判断上传文件的大小(兼容火狐、谷歌、IE、360浏览器)

    本文将详细介绍如何使用JavaScript来判断上传文件的大小,并确保该功能在不同浏览器(包括火狐、谷歌、IE和360浏览器)中的兼容性。 #### 一、需求分析 在实际项目中,通常需要满足以下几点要求: 1. **文件大小...

    关于火狐3和ie无法浏览文件全路径问题

    ### 关于火狐3和IE无法浏览文件全路径问题 #### 背景与概述 在现代Web开发中,浏览器为了提高安全性,通常限制了直接访问本地文件的能力。特别是对于像Internet Explorer(IE)和早期版本的Mozilla Firefox这类较...

    解决ajaxfileupload.js在IE9,firefox下文件超大无效

    本文将详细介绍如何解决在IE9和Firefox下使用`AjaxFileUpload.js`进行文件上传时遇到的大文件上传失效的问题。 #### 问题描述 当尝试通过`AjaxFileUpload.js`上传较大文件至服务器时,在IE9和Firefox浏览器中可能...

    IE8上传文件时javascript取文件的真实路径的问题(\"C:\\fakepath\\xxxxx )

    4. **升级浏览器**:鼓励用户升级到更现代的浏览器,如Chrome、Firefox或Edge,它们提供了更好的API和安全机制,不再返回虚假路径。 5. **使用Flash或ActiveX控件**:如果必须在IE8上获取真实路径,可以考虑使用...

    WeisEditor v2.2.1(.net Web编辑器,兼容IE/Firefox).rar

    兼容IE,Firefox浏览器 新修改 提供初级API WeisAPI(详见Demo使用,Editor.InnerHTML及Editor.Focus() ) 新增功能有: 1:过滤危险的标签字符WeisConfig.isReplaceDangerousCode。 2:设置编辑器回车事件的模式...

    asp.net 多图片上传 可预览 兼容火狐 IE

    可预览 兼容火狐 IE"是一个功能实现,它允许用户在网页上一次性上传多张图片,并在上传前或上传过程中提供预览功能,同时确保该功能在不同浏览器,如火狐(Firefox)和IE(Internet Explorer)之间具有良好的兼容性...

    本机cookie查看器(IE,firefox)cookieView_ie_firefox

    标题中的“本机cookie查看器(IE,firefox)cookieView_ie_firefox”指的是一个软件工具,专门用于查看本地计算机上Internet Explorer(IE)和Firefox浏览器的Cookie信息。Cookie是网站在用户计算机上存储的小型文本...

    JS获取input file绝对路径的方法(推荐)

    某些浏览器(如IE)返回的是文件的绝对路径,而另外一些浏览器(如Firefox)则只返回文件名。为了让代码在所有主流浏览器中都能工作,需要进行判断并分别处理。 2. **Firefox浏览器特别处理**:由于Firefox不返回...

    JavaScript 导入 excel 兼容IE11

    在JavaScript中导入Excel文件,尤其是在兼容古老的Internet Explorer 11(IE11)浏览器时,需要考虑到这个浏览器并不支持现代的File API和其他先进的Web技术。本文将深入探讨如何实现这一功能,以及涉及到的关键知识...

    JavaScript画线,画图兼容FireFox,IE等浏览器

    本主题主要探讨如何使用JavaScript实现跨浏览器的画线和画图功能,特别是兼容Firefox和IE等主流浏览器。 首先,JavaScript本身并不直接支持 canvas 元素的低级图形操作。canvas 是HTML5引入的一个元素,提供了在...

    兼容IE chrome FF 图片上传前预览

    这段代码是用于在图片上传前实现预览功能的,它兼容了Internet Explorer(IE)、Chrome 和 Firefox 这三种主流浏览器。在用户选择图片文件后,可以在网页上显示一个缩放后的预览图,确保预览图像的宽度和高度不超过...

    Firefox火狐浏览器官方52.0.1esr-win32版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。52.0.1esr是Firefox的一个特定版本,面向企业用户,提供更稳定和长期的支持。在Windows 32...

    Firefox火狐浏览器官方52.0.1-win32版本exe安装包

    《Firefox火狐浏览器52.0.1-win32版本:深入解析与使用指南》 Firefox火狐浏览器,由Mozilla基金会开发,是一款全球知名的开源网络浏览器。本文将围绕"Firefox火狐浏览器官方52.0.1-win32版本exe安装包"进行详细...

    jsp 文件上传浏览,支持ie6,ie7,ie8.docx

    本文将围绕一份名为“jsp 文件上传浏览,支持ie6,ie7,ie8”的文档进行深入探讨,旨在揭示如何实现一个兼容IE6、IE7和IE8的JSP文件上传预览功能,并提供实际代码实例。 #### 二、背景知识概述 在深入分析前,我们...

    WebDriver(Chrome、IE、Edge、FireFox)

    WebDriver支持多种浏览器,包括Chrome、IE(Internet Explorer)、Edge和Firefox,这些都是在标题和描述中提及的。 1. **Chrome WebDriver**,也称为ChromeDriver,是由Google开发的,用于与Chrome浏览器进行通信。...

    IE和FF的图片上传预览

    本文将详细讲解如何实现IE(Internet Explorer)和FF(Firefox)浏览器的图片上传预览功能,以及处理这两种浏览器在处理文件路径上的差异。 首先,让我们了解一下图片上传预览的基本原理。当用户在网页上选择一个...

    myeclipse的IE和火狐浏览器插件

    "myeclipse的IE和火狐浏览器插件"允许开发者在MyEclipse内部直接通过Internet Explorer(IE)和Firefox浏览器打开并运行网页,极大地提高了开发效率。 **1. 插件安装与配置** 要使用这个功能,首先需要在MyEclipse...

    改变文件域的样式实现思路同时兼容ie、firefox

    针对这个问题,我们可以采取一些技巧来改变文件域的样式,同时确保在不同的浏览器,如IE和Firefox中具有良好的兼容性。以下是一种实现方法,具体步骤如下: 1. **透明化文件域**: 文件域的默认样式通常难以调整,...

    firebug for IE6+, Firefox, Opera, Safari and Chrome

    标题提到的"firebug for IE6+, Firefox, Opera, Safari and Chrome",意味着这是一个跨浏览器的解决方案,旨在为开发者提供在不同浏览器上调试和优化网页的能力。 Firebug Lite是Firebug的轻量级版本,适用于不支持...

Global site tag (gtag.js) - Google Analytics