web-dev-qa-db-ja.com

Javascript FileReader()でローカルファイルを開く方法

特定のファイルでのみ機能するように このコード を変更したいのですが、正しいURLパラメーターを理解できず、見つけたすべてのコード例でファイル選択ダイアログを使用しています。

<!DOCTYPE html>
<html>
  <head>
    <title>reading file</title>
    <script type="text/javascript">

        var reader = new FileReader();

        function readText(that){

            if(that.files && that.files[0]){
                var reader = new FileReader();
                reader.onload = function (e) {  
                    var output=e.target.result;

                    //process text to show only lines with "@":             
                    output=output.split("\n").filter(/./.test, /\@/).join("\n");

                    document.getElementById('main').innerHTML= output;
                };//end onload()
                reader.readAsText(that.files[0]);
            }//end if html5 filelist support
        } 
</script>
</head>
  <body>
    <input type="file" onchange='readText(this)' />
    <div id="main"></div>
  </body>

次のコードを変更しても機能しないのはなぜですか。

<body>
    <input type="file" onchange='readText(this)' />
    <div id="main"></div>
</body>

に:

<body onload="readText('file:///C:/test.txt')">
    <div id="main"></div>
</body>
7
Nemo XXX

セキュリティ上の制限があるため、ブラウザはそのような機能を提供しません。ユーザーがファイル選択ダイアログで特定のファイルを選択しない(またはドラッグアンドドロップでこれを行わない)まで、ローカルファイルを読み取ることは許可されていません。そのため、すべてのコード例でファイル選択ダイアログを使用しています。

詳細 HTML5ではブラウザ内からローカルクライアントファイルを操作できますか

7
Andrey