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 相关文章推荐
jquery 选择器部分整理
Oct 28 Javascript
jQuery 加上最后自己的验证
Nov 04 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
点击表单提交时出现jQuery没有权限的解决方法
Jul 23 Javascript
解析javascript中鼠标滚轮事件
May 26 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
vue.js指令和组件详细介绍及实例
Apr 06 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
js正则表达式校验指定字符串的方法
Jul 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
php生成WAP页面
2006/10/09 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php中error与exception的区别及应用
2014/07/28 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
javascript之更有效率的字符串替换
2008/08/02 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
总结Python编程中函数的使用要点
2016/03/20 Python
Python制作词云的方法
2018/01/03 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
Python求凸包及多边形面积教程
2020/04/12 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
附答案的Java面试题
2012/11/19 面试题
退休感言
2014/01/28 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python