Как создать изображение из файла, который пользователь загрузил в инпут или перетащил

Можно ли мне как-то создать изображение из экземпляра класса File.

Получаю изображени при перетаскивании

dragenter(e) {
  e.stopPropagation();
  e.preventDefault();
}

dragover(e) {
  e.stopPropagation();
  e.preventDefault();
} 
drop(e) {
  e.stopPropagation();
  e.preventDefault();

  const dt = e.dataTransfer;
  const files = dt.files;
  const imgFile  = files[0];
}

как мне создать изображение чтобы я мог добавить его на страницу


Ответы (2 шт):

Автор решения: Stranger in the Q

Необходимо использовать FileReader

input.onchange = function(file) {
  let reader = new FileReader();
  reader.onload = () => img.src = reader.result;
  reader.readAsDataURL(file.target.files[0]);
};
<input id="input" type='file' accept='image/*' ><br>
<img id='img'>

→ Ссылка
Автор решения: Александр Лесив

Подробнее на MDN, похожий пример в конце статьи

const fileInput = document.getElementById('unique');
const imgElement = document.getElementById('img');

// Простой пример
fileInput.addEventListener('change', function(){
  if(this.value) {
    const img = this.files[0];
    const imgUrl = window.URL.createObjectURL(img);
    imgElement.src = imgUrl;
  }
})
<input type="file" id="unique" accept="image/*"/>
<img id="img"/>

→ Ссылка