javascriptはfileコントロールの全パスを取得します.

1862 ワード

firefoxはフルパスの方式と原理を取得します.document.getElemenntById.files方法はユーザが選択したファイルのセットを取得するために用いられます.一般的には単一ファイルを選択します.次に、nsIDOMFileが提供する属性と方法を使用することができます.これは2つの属性と3つの方法を含みます.fileName:ユーザが選択したファイルの名前を取得するために、value値を直接取得した結果と同じです.fileSize:ユーザが選択したファイルのサイズを取得します.get AsBinary():ユーザが選択したファイルのバイナリデータを取得します.get AsData URL():ユーザが選択したファイルのパスを取得し、このパスは暗号化されています.現在はFireFoxでしか使用できません.get AsText():ユーザが選択したファイルの指定文字コードのテキストを得る.一つの説明が必要です.方法getAsData URLはユーザが選択したファイルのローカルパスを取得することができますが、このパスの文字列テキストはFireFoxによって暗号化されました.この暗号文はFireFoxにしか認識されません.他のブラウザは識別できません.つまり、暗号化されたパスを直接にタグのsrc属性に割り当てます.FireFoxでは直接画像を表示することができますが、IEではできません.
 
<html>
    <head>
        <title>get file input full pathtitle>
    <script language='javascript'>
        function getFullPath(obj)
        {
            if(obj)
            {
                if (window.navigator.userAgent.indexOf("MSIE")>=1)    //ie
                {
                    obj.select();
                    return document.selection.createRange().text;
                }
                else if(window.navigator.userAgent.indexOf("Firefox")>=1)             //firefox
                {
                    if(obj.files)
                    {
                        return obj.files.item(0).getAsDataURL();
                    }
                    return obj.value;
                }
                return obj.value;
            }
        }
    </script> 
    <head>
    <body>
        <input type="file" onchange="document.getElementById('img').src=getFullPath(this);" />
    <img id="img" />
    </body>
</html>