0

HTML FileReader を介してファイルから文字列をインポートしようとすると、私にとって苦痛になり始めます。テストにより、メイン関数内のアラートは、イベントが完了すると消えたコンテンツを示します。教えてください。

<input type="file" id="Open" />
<script type="text/javascript">
function readSingleFile(evt) {
  var f = evt.target.files[0]; 
  var r = new FileReader();
  var contents;
  if (f) {
      r.onloadend = function(evt) { 
        var contents = evt.target.result.substr();
        // this alert show string content
        alert(contents);
      }
      r.readAsText(f);
  }
  // there's no string content - (undefined)
  alert(contents);
}
document.getElementById('Open').addEventListener('change', readSingleFile, false);
</script>
4

1 に答える 1

1

このFileReaderオブジェクトにより、Web アプリケーションはファイルの内容を非同期的に読み取ることができます。r.readAsText(f) を呼び出した直後にファイルの内容を取得することはできませんonloadend evt関数で内容を処理する必要があります

ちょうどこのような

<script type="text/javascript">
    var contents;

    function readSingleFile(evt) {
      var f = evt.target.files[0]; 
      var r = new FileReader();

      if (f) {
          r.onloadend = function(evt) { 
            contents = evt.target.result.substr();
            // this alert show string content
            alert(contents);

            //code for the contents
          }
          r.readAsText(f);
      }
      // there's no string content - (undefined)
      //alert(contents);
    }
    document.getElementById('Open').addEventListener('change', readSingleFile, false);
</script>
于 2012-06-20T04:26:43.743 に答える