Показать сообщение отдельно
  #1 (permalink)  
Старый 06.07.2021, 10:20
Аспирант
Отправить личное сообщение для Olga27 Посмотреть профиль Найти все сообщения от Olga27
 
Регистрация: 10.06.2021
Сообщений: 49

Не получать сделать загрузку файла с прогрессом при нажатии Submit?
Нашла в интернете исходники где сделано загрузку файла. В консоле отображается прогресс (сколько в процентах загрузилось). Все это происходит при изменении поле input (change), вот пример кода.
<input type="file" name="afile" id="afile"/>


<script>

document.querySelector('#afile').addEventListener('change', function(e) 
{
//document.getElementById('upload-form').addEventListener('submit', function(e)( 
 e.preventDefault();
//document.querySelector('#afile').addEventListener('change', function(e) {
  var file = this.files[0];

  var fd = new FormData();
  fd.append("afile", file);
  // These extra params aren't necessary but show that you can include other data.
  fd.append("username", "Groucho");
  fd.append("accountnum", 123456);

  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'handle_file_upload.php', true);
  
  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      var percentComplete = (e.loaded / e.total) * 100;
      console.log(percentComplete + '% uploaded');
    }
  };

  xhr.onload = function() {
   console.log(this.responseText);
   // if (this.status == 200) {
    //  var resp = JSON.parse(this.response);

     // console.log('Server got:', resp);

    //  var image = document.createElement('img');
    //  image.src = resp.dataUrl;
    //  document.body.appendChild(image);
    //};
  };

  xhr.send(fd);
}, false);
</script>

</body>
</html>


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

<form method="post" name="upload" id="upload-form"><div>
<input type="file" name="afile" id="afile"/>
<input class="in_input" type="submit" value="Загрузить"></div>
</form>  

<script>

document.getElementById('upload-form').addEventListener('submit', function(e)
{
console.log("Test");
 var file = this.files[0];

  var fd = new FormData();
  fd.append("afile", file);
  // These extra params aren't necessary but show that you can include other data.
  fd.append("username", "Groucho");
  fd.append("accountnum", 123456);

  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'handle_file_upload.php', true);
  
  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      var percentComplete = (e.loaded / e.total) * 100;
      console.log(percentComplete + '% uploaded');
    }
  };
  
   xhr.onload = function() {
   console.log(this.responseText);
   // if (this.status == 200) {
    //  var resp = JSON.parse(this.response);

     // console.log('Server got:', resp);

    //  var image = document.createElement('img');
    //  image.src = resp.dataUrl;
    //  document.body.appendChild(image);
    //};
  };

   xhr.send(fd);
}, false);
</script>

</body>
</html>


Как можно исправить, чтобы при выборе файла и нажатии submit он грузился в папку?
Ответить с цитированием