2014-04-12 140 views
0

我試圖用FileReader(),JavaScript獲取文件內容。通過FileReader()獲取文件內容JavaScript

,我覺得這樣的回答:https://stackoverflow.com/a/21962101/2898694

由於@Markasoftware在評論中說,我想保存結果爲VAR。

function readSingleFile(evt) { 
     //Retrieve the first (and only!) File from the FileList object 
     var myFile = evt.target.files[0]; 
     var reader = new FileReader(); 
     var result; 
     reader.readAsText(myFile); 
     reader.onload=function(){ 
      result = reader.result; 
      console.log(result); // works 
     } 
     console.log(result); // not works 
    } 

如果我想看到的內容在onload處理所有的罰款,但出來的我看不到結果。爲什麼?

回答

0

因爲onload運行異步。在onload事件觸發之前執行console.log(result); // not works

更多的是:How do I return the response from an asynchronous call?

+0

謝謝。只是紅色。仍然不明白如何重組我的代碼:(你可以舉一個例子嗎? –

+0

這取決於你想達到什麼,你需要'result'作爲另一個函數的輸入嗎?在事件處理函數中用'結果'作爲參數 – phylax

+0

是的,我必須調用另一個函數,但是我不想調用另一個函數,只是在讀取文件之後,我想讀取文件,顯示輸出,如果一切正常,按另一個按鈕並調用另一個函數 –

0

例如

<html> 
    <head> 
     <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css"> 
     <script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="http://code.jquery.com/ui/1.11.3/jquery-ui.js"></script> 
    </head> 
    <body> 
     <script> 
      function PreviewImage() { 
      var oFReader = new FileReader(); 
      oFReader.readAsDataURL(document.getElementById("uploadImage").files[0]); 
      oFReader.onload = function (oFREvent) { 
       var sizef = document.getElementById('uploadImage').files[0].size; 
       document.getElementById("uploadPreview").src = oFREvent.target.result; 
       document.getElementById("uploadImageValue").value = oFREvent.target.result; 
      }; 
     }; 
     jQuery(document).ready(function(){ 
      $('#viewSource').click(function() 
      { 
       var imgUrl = $('#uploadImageValue').val(); 
       alert(imgUrl); 
      }); 
     }); 
     </script> 
     <div> 
      <input type="hidden" id="uploadImageValue" name="uploadImageValue" value="" /> 
      <img id="uploadPreview" style="width: 150px; height: 150px;" /><br /> 
      <input id="uploadImage" style="width:120px" type="file" size="10" accept="image/jpeg,image/gif, image/png" name="myPhoto" onchange="PreviewImage();" /> 
     </div> 
     <a href="#" id="viewSource">Source file</a> 
    </body> 
</html>