Javascript ile Resimleri Yüklemeden Önce Önizleme Yapmak
Bazen görselleri yüklemeden, sunucuya göndermeden önce önizleme yaptırmak isteyebilirsiniz. Gelin bunu nasıl yapacağımıza bir bakalım.
İlk olarak birden fazla görsel seçilebilmesi için multiple
niteliği kullanacağız. Ayrıca sadece görsellerin seçilmesi içinde accept="image/*"
tanımını eklememiz gerekiyor input etiketimize.
<input type="file" multiple accept="image/*" id="images">
Editörde GörüntüleVe seçilen görsellerin önizlemesini göstereceğimiz bir div daha ekleyelim.
<div id="preview"></div>
Editörde GörüntüleŞimdi ilk olarak input'un change
eventını dinleyeceğiz. Bir değişiklik olduğunda bunu yakalamak için;
const images = document.getElementById('images'),
preview = document.getElementById('preview');
images.addEventListener('change', function(){
// görseller seçildiğinde burası çalışır
});
İlk olarak preview
divimizin içini boşaltalım.
preview.innerHTML = '';
Daha sonra eğer this.files
değerini console'a basarsanız FileList
objesi döndüğünü görebilirsiniz. Bunlar seçtiğimiz dosyaların objesi. Biz bunu array'e çevirip map()
fonksiyonundan geçirerek her birisi için işlem yapmamız gerekiyor. Yani;
[...this.files].map(file => {
// işlemleri burada yapacağız
});
Seçilen dosyanın içeriğini okumak için FileReader
web apisini kullanacağız.
const reader = new FileReader();
reader.addEventListener('load', function(){
// dosya başarıyla okunduğunda burası çalışacak
console.log(this.result);
});
reader.readAsDataURL(file);
Artık load
eventı içinde Image
ile bir image nesnesi oluşturup görseli preview
divine ekleyebiliriz.
const image = new Image();
image.height = 100;
image.title = file.name;
image.src = this.result;
preview.appendChild(image);
Toparlayacak olursak yukarıdaki işlemlerin tamamı şöyle gözükecek;
const images = document.getElementById('images'),
preview = document.getElementById('preview');
images.addEventListener('change', function() {
preview.innerHTML = '';
[...this.files].map(file => {
const reader = new FileReader();
reader.addEventListener('load', function(){
const image = new Image();
image.height = 100;
image.title = file.name;
image.src = this.result;
preview.appendChild(image);
});
reader.readAsDataURL(file);
})
});
Örneği denemek için codepen demosuna bakabilirsin:
https://codepen.io/tayfunerbilen/pen/abJWyao