@AlexandrMa

Как прочитать файл в момент отправки?

Файл надо отправить ajaxом, BLOB. Сейчас файл считываю в момент добавления в форму, результат сохраняю в поле hidden. Криво, но пока только так осилил.
Сделать чтение файла в момент самой отправки (button) я так и не смог. Из-за того что FileReader асинхронный и запутался с коллбеками. Как переписать мой код, чтобы избавиться от
document.getElementById('file').addEventListener('change', function (e){
});

а весь код чтения добавить в функция send()?

<form method="post" action="#">
<input type="text" id="name">
<input type="text" id="price">
<input type="file" id="file">
<input type="hidden" id="file_data">
<input type="button" value="Send" onclick="send()">
</form>


function send(){

  let data = {
    name: document.getElementById('name').value,
    price: document.getElementById('price').value,
    file: document.getElementById('file_data').value
  };

  console.log(data);
  
}


document.getElementById('file').addEventListener('change', function (e){
  let file = e.target.files[0];
  let reader = new FileReader();
  reader.onload = (function (file) {
    return function (e) {
      let r = e.target;
      document.getElementById('file_data').value = r.result;
    };
  })(file);
  reader.readAsDataURL(file);
});
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Tim-A-2020
@Tim-A-2020 Куратор тега JavaScript
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
04 мар. 2021, в 13:23
800 руб./в час
04 мар. 2021, в 13:23
750000 руб./за проект
04 мар. 2021, в 13:11
250000 руб./за проект