none
IE8,JS取file的完整路径 RRS feed

  • 问题

  • 在IE8或者IE9 JS取不到file(html控件,不是服务器控件)选择文件的完整路径,

    进入 internet选项,工具 -> Internet选项 -> 安全 -> 自定义级别 -> 将本地文件上载至服务器时包含本地目录路径,设置这个可以解决问题,

    在网上找的获取方法也不行,如下:

    function getPath(obj) {
                if (obj) {
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
                        var file = document.getElementById("File2");
                        obj.select(); return document.selection.createRange().text;
                    }
                    else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                        if (obj.files) {
                            return obj.files.item(0).getAsDataURL();
                        }
                        return obj.value;
                    }
                    return obj.value;
                }
            }

     

    <input id="File2" name="File2" style="width:400px;" type="file" onchange="alert(getPath(this))" /></p>

    但是给客户用不可能挨个设置别人的IE吧?

    哪位老大有其他办法,麻烦告诉下。

    Thanks


    宋海涛
    2011年7月6日 8:27

答案

全部回复

  • 你要这个完整的路径有什么用处呢?其他浏览器都是不允许的,
    【孟子E章】
    2011年7月6日 9:17
    版主
  • 我要上传文件,所以要取得完整路径传到后台。如果我将站点加到受信任的站点,我用上面的代码也可以取到完整路径。能不能直接代码获取到?不设置自定义级别,也不加受信任站点
    宋海涛
    2011年7月6日 9:19
  • IE9中,必须要设置一个(自定义级别,或者受信任站点)才能取到完整路径,IE8中,通过上面的代码可以取到完整路径,我目前的情况是这样的,不知道别人的是不是一样的效果。不知道有没有针对IE9不用设置的获取完整路径的代码。求高人指点。

    Thanks!


    宋海涛
    2011年7月6日 10:20
  • 可以试试看直接获取value

    <input id="File2" name="File2" style="width:400px;" type="file" onchange="alert(this.value);" />


    2011年7月11日 7:56
    版主
  • 可以试试看直接获取value

    <input id="File2" name="File2" style="width:400px;" type="file" onchange="alert(this.value);" />



    这种取法在IE8中没问题,在IE9中要设置internet选项,不过目前我已经不需要取url了,取url上传有问题。
    宋海涛
    2011年7月11日 8:51
  • 上传文件没有必要知道客户端的地址啊,这是安全考虑采取的方法,

    另外,你的代码要兼容其他浏览器,其他浏览器是不提供这样的方法的


    【孟子E章】
    2011年7月12日 0:46
    版主
  • 谢谢,我知道了
    宋海涛
    2011年7月12日 3:08