2014-09-19 3 views
1

Я использую fileReader для проверки, совпадает ли загруженное изображение профиля с моими условиями. Тем не менее, у меня нет всегда одного и того же результата. Можете ли вы помочь мне исправить эту ошибку?не всегда такой же результат с fileReader Javascript

Вот мой код HTLM:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>File API</title> 

    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <div id="page-wrapper"> 

     <h1>Image File Reader</h1> 
     <div> 
      Select an image file: 
      <input type="file" id="fileInput"> 
     </div> 

    </div> 

    <script src="images.js"></script> 
</body> 
</html> 

Вот мой JavaScript/FileReader (images.js) Код:

window.onload = function() 
{ 
    var width=0; 
    var height=0; 
    var exten= false; 
    var size = false; 

    var fileInput = document.getElementById('fileInput'); 
    var fileDisplayArea = document.getElementById('fileDisplayArea'); 


    fileInput.addEventListener('change', function(e) 
    { 
     var file = fileInput.files[0]; 
     var imageType = /image.png/; 

     if (file.type.match(imageType)) 
     { 
      exten = true; 
      var reader = new FileReader(); 

      reader.onload = function(e) 
      { 
       var img = new Image(); 
       img.src = reader.result; 

       img.onload = function() 
       { 
        width=this.width; 
        height=this.height; 
       } 
      } 

      reader.readAsDataURL(file); 
     } 
     else 
     { 
      exten= false; 
     } 

     if(width == 50 && height ==50) 
     { 
      size = true; 
     } 
     else 
     { 
      size = false; 
     } 

     //Here, we check that the image matches with png and 50*50px 
     if(size && exten) 
     { 
      alert('Your image is ok.'); 
     } 
     else 
     { 
      if(!size && !exten) 
      { 
       alert('Image needs to be 50*50px and in png'); 
      } 
      else 
      { 
       if(!size && exten) 
       { 
        alert('Image needs to be 50*50px'); 
       } 
       else 
       { 
        if(size && !exten) 
        { 
         alert('Image needs to be in png'); 
        } 
       } 
      } 
     } 
    }); 
} 

Спасибо за вашу помощь

ответ

0

Вы имеете подождать выполнение события img.onload перед проверкой width и height.

Код, который находится вне этого обработчика событий и который использует эти свойства, должен быть перемещен внутри него.

Смежные вопросы