`

兼容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);
}

分享到:
评论

相关推荐

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

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

    Jplayer音乐播放器兼容IE7

    兼容IE7以及以上版本,火狐、谷歌、浏览器的音乐播放器,可以触发播放完成事件,传递路径播放音乐,单曲循环,列表循环等功能

    .Net版本&ckeditor_4.1.2+ckfinder+CuPlayerMiniV4+moPlayer&兼容ie7、ie8和火狐

    整合了最新的ckeditor4和酷播播放器,通过简单易懂的moPlayer视频插件为ckeditor添加了可控的视频播放器 1、整个文件包直接运行即可使用。 2、通常编辑器是放在后台,所以这里的test.htm文件是在2级栏目下,如果...

    完美有效的shopex解决无法上传图片方法

    SHOPEX添加商品时,点击上传图片没有... 适用于IE、firefox 香港空间 100天无条件退款保证  PS:如果您感觉到麻烦,并且已经还原到旧的flash版本,则此文件不需要更新!  更新附件方式与更新shopex补丁一样的操作.

    解决兼容火狐等其他浏览器里js不能拷贝的问题

    兼容火狐等其他浏览器里js不能拷贝的问题 解决只能IE下才能复制的难题 必须http://路径下访问 才能实现效果 修改js里text的id和相关代码 QQ:275481232 msn:guyinxin@hotmail.com guyinxin@163.com

    Flash头像上传剪裁预览组件 v2.0.rar

    4.兼容性好,任何浏览器 IE10, IE9, IE8, IE7 IE 6 ,firefox, chrome 都正常使用 5.上传并预览,用户可以任意选择区域,支持头像旋转 6.无论图片过大还是过小,都可以按照固定大小显示 7.支持亮度,对比度,饱和度...

    大名鼎鼎SWFUpload- Flash+JS 上传

    在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展 ...

    Weiseditor v3.2.1

    Weiseditor是一个免费的在线文本编辑器,强大,易扩展,完全源码开放.Weiseditor v3.2.1兼容IE,Firefox,Chrome,Safari,*Opera浏览器   非常完善的个性化设计! 你可以在一个页面同时布置多个编辑器. 您可以随意...

    玖玖企业网站 v1001.rar

    兼容IE和Firefox =============== ☆后台管理路径 =============== 后台管理登陆页面为/admin/login.asp 默认账号:admin 默认密码:admin 默认安全提问:玖玖的域名 默认安全答案:jiu99

    semcms外贸网站(多语言版) v1.0.4.zip

    semcms外贸网站(多语言版)是一套开源外贸企业网站管理系统,主要用于外贸企业,兼容IE、Firefox 、google、360 等主流浏览器。SemCms采用国际通用utf-8编码编写。SemCms非常适合在外贸企业,电子商务互联网应用上...

    VPCMS内容管理系统 v4.2

    整站采用TABLE+CSS布局,兼容IE7、FIREFOX,不兼容IE6了;独立设置文章keyword、Description;利于搜索引擎收录;添加搜索引擎收录检测功能代码;安装注意事项:1、下载解压后上传文件到根目录时,即可正常运行。 ...

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    &lt;br&gt;2007/6/21 Version 3.1.2 beta &lt;br&gt;Updates: 1) 修正部分自动播放文件不兼容IE7的BUG。 2) 修正在检测自动播放文件格式时javascript代码出现的一些BUG。 2) 修正MenuConfig、configFolder...

    盛世桃源通用文件管理系统 v2.5 for .net 2.0/3.0/3.5.zip

    53.完美兼容firefox等其它非IE内核浏览器。 54.三层架构模式开发,扩充及调用更方便。 55.内含ajax文件操作技术,更加提高用户体验,提高系统运行效率。 56.支持多磁盘海量数据存储。 57.全面的整合接口,支持...

    emcms外贸网站php版 v2.8

    SemCms是一套开源外贸企业网站管理系统,主要用于外贸企业,兼容IE、Firefox 、google、360 等主流浏览器。 SemCms(asp版)使用vbscript语言编写,结合iis运行。 SemCms(php版)使用php语言编写,结合apache,在window,...

    semcms外贸网站php版源码

    SemCms是一套开源外贸企业网站管理系统,主要用于外贸企业,兼容IE、Firefox 、google、360 等主流浏览器。 SemCms(asp版)使用vbscript语言编写,结合iis运行。 SemCms(php版)使用php语言编写,结合apache,在window,...

    KODExplorer 芒果云-资源管理器

    [关于兼容性] 建议使用chrome firefox ie9+ 体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。 [文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器) [忘记密码] 修改data...

    富头像上传编辑器演示

    跨平台兼容:运行环境Flash Player 10.1+,任何浏览器 IE All、Firefox、 Chrome、Opera...都正常使用。 极致的体验:人性化的设计方式,细节上精心的处理,用户使用起来得心应手。 在线演示:...

    企业SEO站 v13.2 无组件生成HTML.rar

    2、若上传至虚拟主机根目录则要修改文件(特别注意修改 网站配置中 网站地址 域名 “/” 如然后 点击生成静态化 因为本站专注优化网址是绝对路径利于搜索引擎抓取)注意:子目录下可留空 3、网站常规设置(网站名称、...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    2)修正FireFox下插入WMA等音频文件不能播放的BUG. 3)修正关闭图像预览后可能出现的BUG. 4)修正保存图片到本地的一些BUG. 5)更新配置器,增加保存远程图片到本地功能的配置. 2009/12/10 Version 6.1.3 For VS2005/...

    QQ在线客服网页源码工具通用版 v1.0

    因公司的网站需要,需要加一个右侧悬浮的QQ客服,一般我们见到的就是右侧悬挂在网页两侧的条幅图片来实现这样的效果。由于目前公司网站上已经有条幅图片,再加上QQ条幅肯定不...程序经过测试兼容IE,火狐,谷歌浏览器。

Global site tag (gtag.js) - Google Analytics