2017-04-08 25 views
-1

この入力ボックスの代わりにボタンを使用してテキストファイルをロードします。ボタンを押すと、ブラウズウィンドウを表示せずに "me.txt"というテキストファイルをロードします。 ( "me.txt"は同じパスにあります)。それをどうにかしていますか?Javascriptボタンをクリックしてテキストファイルをロード/読み込みする

<input type="file" name="file" id="file"> 

<script> 
document.getElementById('file').onchange = function(){ 

    var file = this.files[0]; 

    var reader = new FileReader(); 
    reader.onload = function(progressEvent){ 
    var lines = this.result.split('\n'); 
    for(var line = 0; line < lines.length; line++){ 
     var wordStr = (lines[line]); 
     var index = wordStr.indexOf("="); // Gets the first index where a space occours 
     var word = wordStr.substr(0, index); // Gets the first part 
     var meaning = wordStr.substr(index + 1); 

     if (word=="a") { 
      document.write(meaning); 
     } 
    } 
    }; 
    reader.readAsText(file); 
}; 
</script> 
+1

"同じ経路にある"とはどういう意味ですか?あなたのウェブページはhttpサーバ経由で開かれていますか?それとも、ファイルスキーマを介して開いただけですか? – tsh

+0

これは不可能です。誰かのコンピュータでファイルを開くのではなく、最初にファイルを選択すると、**巨大な**セキュリティ上の問題 – LGSon

+0

サーバ上のファイルが単純なGETリクエストであれば。ファイルがローカルファイルシステムを使用している場合は、入力なしでは不可能です[type = file] – dfsq

答えて

0

ユーザーがファイルをアクティブに選択することなくユーザーのコンピュータからファイルを読み取ることはできません。ユーザーのコンピュータ上でそのファイルの実際のパスを知ることはできません。ブラウザはこれらの事柄の両方をかなり正しく正当化します。

ボタンを押すと、参照ウィンドウを表示せずに "me.txt"というテキストファイルをロードします。 ( "me.txt"は同じパスにあります)。

  1. Webサーバー・プロセスを使用してアクセスしている場合:あなたはme.txtは、このコードは、その後、中に実行されているHTMLページと同じパス上にあるファイルであることを意味する場合

http://またはhttps://経由ページでは、あなたは、例えば、ファイルを読み取るために、単純なAJAX要求を使用することができます。

$.get("me.txt").then(function(data) { 
    // ...use data... 
}); 
  • あなただけのローカルファイルシステムから実行している場合(file:/// URL)の場合は、代わりにのを使用してください。しかし、あなたはfile:/// URLを使用する必要がある場合は、Chromeで他のローカルファイルを読み取ることはできませんが、Firefoxで次のことができます。

    // NOT allowed from file:/// URLs not work in Chrome; is allowed in Firefox 
    $.ajax({ 
        url: "test.json", 
        dataType: "text" 
    }).then(function(data) { 
        // ...use data here 
    }); 
    

    Firefoxはコンソールでエラーを解析するXMLを報告しますが、またあなたを与えるだろうデータ。

  • 関連する問題