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 相关文章推荐
彪哥1.1(智能表格)提供下载
Sep 07 Javascript
javascript RadioButtonList获取选中值
Apr 09 Javascript
javascript 表单规则集合对象
Jul 21 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
jQuery制作input提示内容(兼容IE8以上)
Jul 05 jQuery
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
Sep 23 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
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
入党自我鉴定范文
2013/10/04 职场文书
大学生演讲稿
2014/04/25 职场文书
教师求职信范文
2014/05/24 职场文书
励志演讲稿大全
2014/08/21 职场文书
医院科室评语
2015/01/04 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle