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


Posted in Javascript onAugust 02, 2016

最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法,如下:

<script type="text/javascript">
//FX获取文件路径方法
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.");
    return;
  }
  if ( file.exists() == false ) {
    alert("File '" + fileName + "' not found.");
    return;
  }


 return file.path;
}


//根据不同浏览器获取路径
function getvl(obj){
//判断浏览器
 var Sys = {}; 
 var ua = navigator.userAgent.toLowerCase(); 
 var s; 
 (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : 
 (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : 
 (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : 
 (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : 
 (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
 var file_url="";
 if(Sys.ie<="6.0"){
  //ie5.5,ie6.0
  file_url = obj.value;
 }else if(Sys.ie>="7.0"){
  //ie7,ie8
  obj.select();
  file_url = document.selection.createRange().text;
 }else if(Sys.firefox){
  //fx
  //file_url = document.getElementById("file").files[0].getAsDataURL();//获取的路径为FF识别的加密字符串
  file_url = readFileFirefox(obj);
 }else if(Sys.chrome){
  file_url = obj.value;
 }
 //alert(file_url);
 document.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url;
}
</script>
<h1>JS获取文件域完整路径的方法,兼容不同浏览器</h1>
<div id="text" style="color:#f00;"></div>
<input type="file" id="file" onchange="getvl(this)" />

以上代码在IE 6 7 8均正常使用,在IE9下,document.selection.createRange()拒绝访问,看来安全性有所提高。

最后测试发现,在IE9下,如果file控件获得焦点,则document.selection.createRange()拒绝访问,

因此,只需要在obj.select()后面加一句obj.blur()即可。

EX:

else if(Sys.ie>="7.0"){
  //ie7,ie8
  obj.select();
  obj.blur();
  file_url = document.selection.createRange().text;
 }


// obj = document.getElementById("file");

以上这篇JS获取input file绝对路径的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js控制div及网页相关属性的代码
Dec 19 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
基于JQuery制作可编辑的表格特效
Dec 23 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
jQuery Position方法使用和兼容性
Aug 23 jQuery
layui实现三级联动效果
Jul 26 Javascript
详解React 元素渲染
Jul 07 Javascript
JavaScript实现复制文章自动添加版权
Aug 02 #Javascript
js获取上传文件的绝对路径实现方法
Aug 02 #Javascript
AngularJS基础 ng-list 指令详解及示例代码
Aug 02 #Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 #Javascript
jQuery实现的placeholder效果完整实例
Aug 02 #Javascript
AngularJS基础 ng-keyup 指令简单示例
Aug 02 #Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 #Javascript
You might like
玛琪朵 Macchiato
2021/03/03 咖啡文化
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
深入理解vue中的$set
2017/06/01 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python内置函数之filter map reduce介绍
2014/11/30 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Django中FilePathField字段的用法
2020/05/21 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
旷课检讨书大全
2014/01/21 职场文书
欢迎领导检查标语
2014/06/27 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
早安问候语大全
2015/11/10 职场文书