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 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
JavaScript实现N皇后问题算法谜题解答
Dec 29 Javascript
JavaScript从数组中删除指定值元素的方法
Mar 18 Javascript
js简单的点击返回顶部效果实现方法
Apr 10 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
从组件封装看Vue的作用域插槽的实现
Feb 12 Javascript
javascript实现时间日期的格式化的方法汇总
Aug 06 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中创建并处理图象
2006/10/09 PHP
提升PHP执行速度全攻略(下)
2006/10/09 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
一起来写段JS drag拖动代码
2010/12/09 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
Python3安装Pymongo详细步骤
2017/05/26 Python
代码分析Python地图坐标转换
2018/02/08 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
logging level级别介绍
2020/02/21 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Python实现简单的2048小游戏
2021/03/01 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
2014年综治宣传月活动总结
2014/04/28 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
授权委托书格式
2014/07/31 职场文书
租赁协议书
2015/01/27 职场文书
顶岗实习协议书
2015/01/29 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
PL350与SW11的比较
2021/04/22 无线电
python全面解析接口返回数据
2022/02/12 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python
java实现web实时消息推送的七种方案
2022/07/23 Java/Android