js获取fileupload绝对路径

最简单的方式就是:IE7(8、9)下------工具------Internet选项------安全-----自定义级别------将文件上传到服务器时包含本地目录路径启用  ,然后就可以用fileupload.postfile.filename就可以获取路径了。 

 

 

 今天做一个关于数据库中数据和EXCEL表对比的DEMO,一开始做的是将EXCEL表上传到服务器之后再对比,可是一旦文件多起来对服务器也是一种考验,于是就只在本地对比,然而在本地对比的时候要获取本地路径,一开始以为 fileupload1.postfile.filename可以获取本地路径,可是这个获取的还是文件名称,fileupload中没有获取当前值得属性,于是就想着用javascript去获取,用document.getElementById("fileupload1").value 用debugger调试的时候获取的居然是一个不存在的地址,郁闷了半天就是搞不清楚是什么问题,于是去网上找了一下,才发现,这种方式只在IE6下面有用,因为高版本的浏览器设定为了安全起见,已经不会显示文件路径,于是用下面方法就可以了,

1 // 判断浏览器类型
2   var isIE = (document.all) ? true : false ;
3 var isIE7 = isIE && (navigator.userAgent.indexOf( ' MSIE 7.0 ' ) != - 1 );
4 var isIE8 = isIE && (navigator.userAgent.indexOf( ' MSIE 8.0 ' ) != - 1 );
5 var isIE6 = isIE && (navigator.userAgent.indexOf( ' MSIE 6.0 ' ) != - 1 );
6
7 var file = document.getElementById( " fileupload1 " );
8 if (isIE7 || isIE8) {
9 file.select();
10 // 获取欲上传的文件路径
11 var path = document.selection.createRange().text;
12 document.selection.empty();
13 }
14 var filepath = document.getElementById( " fileupload1 " ).value;
15 if (isIE6) {path = filepath; }

 但是在火狐下还是没办法获取文件路径,看到网上有人说用getAsDataURL()方法可以获取路径。我测试了一下,用这个方法确实是可以获得路径,但是些路径是被加密过的。于是继续寻找其他方法。。。
      火狐下获取上传文件路径的方法,需要先修改设置。在地址栏输入about:config,然后修改signed.applets.codebase_principal_support的键值,将值修改为true。然后再使用如下代码,就可以获得文件路径。

1 try {
2 netscape.security.PrivilegeManager.enablePrivilege( " UniversalXPConnect " );
3 }
4 catch (e) {
5 alert( ' 请更改浏览器设置 ' );
6 return ;
7 }
8
9 var fname = document.getElementById( " fileupload1 " ).value;
10 var file = Components.classes[ " @mozilla.org/file/local;1 " ]
11 .createInstance(Components.interfaces.nsILocalFile);
12 try {
13 // Back slashes for windows
14 file.initWithPath( fname.replace( / \ // g, "\\\\") );
15 }
16 catch (e) {
17 if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
18 alert( ' 无法加载文件 ' );
19 return ;
20 }
21
22 alert(file.path); // 取得文件路径

转载于:https://www.cnblogs.com/jamesping/articles/2031016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值