3

我正在寻找一种从映射网络驱动器获取“真实”UNC 路径的方法——这是一个常见问题,但没有使用我想要的语言或方法。

我希望用户能够使用 HTML 表单选择文件但不能上传(文件很大)。我想要获得的是文件的完整 UNC 路径。问题是用户通常会从他们映射的网络驱动器(例如 g:\file.txt)中选择文件,这对我没有用 - 我必须有完整的\\server\user\file.txt路径。

我知道在 Windows 中,您可以net use在命令行中使用有关映射驱动器的信息,也可以HKEY_CURRENT_USER\Network\driveletter从 .

我最初的想法是某种形式的 Javascript,但我怀疑注册表项是否可以通过这种方式访问​​。

4

1 回答 1

4

你可以用一段非常简洁的 JavaScript 和一个已经安装的 ActiveX 控件来做到这一点。下面是一个完整的网页,可让您浏览文件,然后在 中显示所选文件的完整 UNC 路径alert

<html> 
    <head> 
    <script type="text/javascript" language="JavaScript"> 
    if (typeof String.prototype.startsWith != 'function') {
      // see below for better implementation!
      String.prototype.startsWith = function (str){
        return this.indexOf(str) == 0;
      };
    }

    function getUNCPath() {
        var fileName = document.getElementById("uploadedFile").value;

        var WshNetwork = new ActiveXObject("WScript.Network"); 
        var Drives = WshNetwork.EnumNetworkDrives(); 
        for (i = 0; i < Drives.length; i += 2) {
            if (fileName.startsWith(Drives.Item(i))) {
                var fullPath = fileName.replace(Drives.Item(i), Drives.Item(i + 1));
                alert(fullPath);
                break;
            }
        }
    }
    </script> 
    </head> 
    <body> 
        <form onsubmit="getUNCPath()"> 
            <input type="file" id="uploadedFile"/>
            <input type="submit" value="Get the UNC Path!" /> 
        </form>
        <span id="uncPath"></span>
    </body> 
</html> 
于 2013-02-27T17:47:17.800 回答