Вы можете использовать FileReader.readAsDataURL()
для изображений.
Просто прочитайте документацию.
Попробуйте сами:
const input = document.getElementById('input');
const img = document.getElementById('img');
const reader = new FileReader();
reader.addEventListener('load', showImage);
input.addEventListener('change', readImage);
function readImage(){
if (!this.files) return;
reader.readAsDataURL(this.files[0]);
}
function showImage(){
img.src = this.result;
}
<input id="input" type="file" onchange="showImage()">
<img id="img">
Подробнее о FileReader API .
EDIT - для будущих читателей
Несправедливо судить FileReader.readAsDataURL()
только по одному аргументу, что он "ужасно неэффективен".В конце концов, если он входит в стандартную спецификацию, он служит своей цели.
Хотя FileReader.readAsDataURL()
действительно менее эффективен, чем URL.createObjectURL()
, в этом случае есть разница:
.readAsDataURL
- асинхронный, .createObjectURL()
- нет. .readAsDataURL
может автоматически собирать мусор, .createObjectURL
не может .
Но, конечно, эти различия могут быть тривиальными, в зависимости от реализации и приложения вашего приложения.