@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);
});
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы