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

最近因需要上传文件到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绝对路径的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JS取得绝对路径的实现代码

    在项目中,我们经常要得到项目的绝对路径,方便我们上传下载文件,JS为我们提供了方法,虽说要迂回一下.代码如下: function getRealPath(){ //获取当前网址,如: http://localhost:8083/myproj/view/my.jsp var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: myproj/view/my.jsp var pathName=window.document.locati

  • 使用JavaScript为一张图片设置备选路径的方法

    在做网页开发的时候,有时候希望给图片设置一个备选路径,即,当src属性对应的主路径加载失败的时候,图片可以马上切换到备选路径.这样,即使主路径失效了,显示备用路径也不会影响网页的正常体验. 注意到网页中一张图片加载失败会触发error事件,因此可以使用DOM模型中的load和error事件实现这一效果. src1='main/image.jpg' //主路径 src2='another/image.jpg' //备用路径 jQuery 1.8以前 使用load和error方法捕捉事件 $('#i

  • js获取上传文件的绝对路径实现方法

    在html中 <input type="file" id="importFile" /> <input type="button" onclick="upload()"/> <script> function upload() { var filename = document.getElementById("importFile").value; // 这时的filen

  • 通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法

    项目需求:如何通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端 题主用jquery接收 <input name="c_pic" id="c_pic" type="file" class="file"> 用的方法是: var input = document.getElementById("c_pic"); input.addEventListener('chang

  • JavaScript获取当前url根目录(路径)

    主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (window.document.location.href/window.document.location.pathname) ------------转自网络 function getRootPath_web() { //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp

  • 浅谈NodeJS中require路径问题

    项目需要用nodejs,感觉nodejs是前端装逼神器了,是通向全栈工程师的必经之路哇,接下来开始踏上学习nodejs的征程.下面是第一个hello,world的程序. 1.server.js文件,这相当于服务器脚本. var http = require("http"); function start() { function onRequest(request, response) { console.log("Request recieved") respon

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

    最近因需要上传文件到oracle blob里, 在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地URL,在网上找了些方法,如下: <script type="text/javascript"> //FX获取文件路径方法 function readFileFirefox(fileBrowser) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPCo

  • JS获取input[file]的值并显示在页面的实现方法

    实例如下所示: $(document).on('change', '.photo-box .file', function () { //alert($(this).val()); function getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { // basic url = window.createObjectURL(file); } else if (window.URL !=

  • js 获取本地文件及目录的方法(推荐)

    Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高级语言中经常做的工作一样.怎么样,你是否需要了解这方面的知识?那就请跟我来,本文将详细描述如何使用Javascript语言进行文件操作. 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详

  • python获取程序执行文件路径的方法(推荐)

    1.获取当前执行主脚本方法:sys.argv[0]和_ file _ (1)sys.argv 一个传给Python脚本的指令参数列表.sys.argv[0]是脚本的名字.一般得到的是相对路径,用os.path.abspath(sys.argv[0])得到执行文件的绝对路径: dirname, filename = os.path.split(os.path.abspath(sys.argv[0])) os.path.realpath(sys.argv[0]) 如果在命令行执行sys.argv返回

  • JS获取地址栏参数的两种方法(简单实用)

    js获取地址栏参数的方法有两种:第一种,采用正则表达式获取地址栏参数,第二种,是比较传统的方法,在这小编给大家强烈推荐使用第一种方法,既方便有实用,具体实现过程请看下文详述. 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window

  • JS获取几种URL地址的方法小结

    以下为JS获取几种URL地址的方法 复制代码 代码如下: thisURL = document.URL;thisHREF = document.location.href;thisSLoc = self.location.href;thisDLoc = document.location; thisTLoc = top.location.href;thisPLoc = parent.document.location;thisTHost = top.location.hostname;thisH

  • js获取当前日期前七天的方法

    本文实例讲述了js获取当前日期前七天的方法.分享给大家供大家参考.具体如下: //设置日期,当前日期的前七天 var myDate = new Date(); //获取今天日期 myDate.setDate(myDate.getDate() - 7); var dateArray = []; var dateTemp; var flag = 1; for (var i = 0; i < 7; i++) { dateTemp = (myDate.getMonth()+1)+"-"+

  • js实现input密码框提示信息的方法(附html5实现方法)

    本文实例讲述了js实现input密码框提示信息的方法.分享给大家供大家参考,具体如下: 今天我们主管说要在密码框加入个"请输入密码"的提示信息,第一次的时候本来想着用修改input  type 属性的方法呢,结果有某些特别的浏览器不支持,IE的input的type属性是只读的,不能动态设置.所以换其它的方法,实例如下: <input type="text" onfocus="changeTip(this);" id="passTe

  • JS获取一个未知DIV高度的方法

    本文实例讲述了JS获取一个未知DIV高度的方法.分享给大家供大家参考,具体如下: 通过元素的clientHeight属性能够得到元素的高度,如: var height = element.clientHeight; 这种做法的局限: 1. 如果元素的display属性设置为none, 那么得到的结果为0 2. 在safari浏览器中,需要使用:element.offsetHeight得到实际高度,这是safari浏览器的bug 下面是Prototype提供的方法,能够兼容各种浏览器,同时在元素隐

  • js获取input长度并根据页面宽度设置其大小及居中对齐

    1. js获取页面宽度高度及屏幕分辨率 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.scrollHeight 网页被卷去

随机推荐