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面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
Jquery replace 字符替换实现代码
Dec 02 Javascript
window.dialogArguments 使用说明
Apr 11 Javascript
封装html的select标签的js操作实例
Jul 02 Javascript
js为空或不是对象问题的快速解决方法
Dec 11 Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
JS动态图片的实现方法完整示例
Jan 13 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 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
图解上海144收音机
2021/03/02 无线电
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
javascript arguments使用示例
2014/12/16 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
wxPython学习之主框架实例
2014/09/28 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
Python PIL图片添加字体的例子
2019/08/22 Python
有机童装:Toby Tiger
2018/05/23 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
大学班长的职责
2014/01/27 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
南京青奥会口号
2014/06/12 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书