通过JS获取文件上传路径

因为程序的某些需要,要获取上传文件的本地路径,在 CS 代码中使用的是 fileupload1.PostedFile.FileName ,结果发现得出来的只是文件名,不包含路径,记得以前确实是用这样的方法取得过路径的。 


      于是上网搜索了下,原来是因为高版本的浏览器设定为了安全起见,已经不会显示文件路径。只有想办法用 JS 来获取路径了,测试了一下后发现。单独只是使用 document.getElementById("fileupload1").value ,在 IE6 里可以获取全路径,在 IE7,IE8 及火狐里都是只能获得文件名。 

      后来在网上找到了解决办法, IE7,IE8 可以用如下代码获取文件路径 

程序代码 程序代码 

  

    // 判断浏览器类型 

    var isIE = (document.all) ? true : false; 

    var isIE7 = isIE && (navigator.userAgent.indexOf('MSIE 7.0') != -1); 

    var isIE8 = isIE && (navigator.userAgent.indexOf('MSIE 8.0') != -1); 

  

    var file=document.getElementById("fileupload1"); 

    if(isIE7 || isIE8) 

    { 

        file.select(); 

        var path=document.selection.createRange().text; 

        document.selection.empty(); 

    } 

  

       但是在火狐下还是没办法获取文件路径,看到网上有人说用 getAsDataURL() 方法可以获取路径。我测试了一下,用这个方法确实是可以获得路径,但是些路径是被加密过的。于是继续寻找其他方法。。。 

      火狐下获取上传文件路径的方法,需要先修改设置。在地址栏输入 about:config ,然后修改 signed.applets.codebase_principal_support 的键值,将值修改为 true 。然后再使用如下代码,就可以获得文件路径。 

    

程序代码 程序代码 

try { 

        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 

    } 

    catch (e) { 

        alert(' 请更改浏览器设置 '); 

        return; 

    } 

  

    var fname = document.getElementById("fileupload1").value; 

    var file = Components.classes["@mozilla.org/file/local;1"] 

        .createInstance(Components.interfaces.nsILocalFile); 

    try { 

        // Back slashes for windows 

        file.initWithPath( fname.replace(g, "") ); 

    } 

    catch(e) { 

        if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e; 

        alert(' 无法加载文件 '); 

        return; 

    } 

  

    alert(file.path);  // 取得文件路径 

    

  

    运行以上代码时,浏览器会弹出警告,选择”是“之后,即可获得路径。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/komodo_d/archive/2009/11/12/4802816.aspx
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值