3

マップされたネットワーク ドライブから「実際の」UNC パスを取得する方法を探しています。よくある質問ですが、希望する言語や方法を使用していません。

ユーザーが HTML フォームを使用してファイルを選択できるようにしたいのですが、アップロードはできません(ファイルが膨大です)。取得したいのは、ファイルへの完全な UNC パスだけです。問題は、ユーザーが通常、マップされたネットワーク ドライブ (g:\file.txt など) からファイルを選択することです\\server\user\file.txt

Windows では、コマンド ラインで を使用net useして、マップされたドライブに関する情報を取得したり、 から情報を取得したりできることは知っていますがHKEY_CURRENT_USER\Network\driveletter、HTML フォームから情報を取得する方法が必要です。

私の最初の考えは、Javascript の何らかの形式でしたが、この方法でレジストリ キーにアクセスできるとは思えません。

4

1 に答える 1

4

これは、非常に簡潔な JavaScript と既にインストールされている ActiveX コントロールを使用して、非常に簡単に行うことができます。以下は、ファイルを参照して、選択したファイルの完全な UNC パスを次の形式で表示できる完全な Web ページです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 に答える