Bonjour,
Étant tous nouveau en javascript, j'essaie de faire un aperçu d'image, avant l'upload sur un serveur.
J'ai trouver un tuto : https://openclassrooms.com/courses/dynamisez-vos-sites-web-avec-javascript/l-api-file
J'ai essayé de l'améliorer mais sans succès.
Juste les images se créé dans l'ordre avec leurs noms.
Tous se passe bien si on appuis sur le bouton une fois.
Si on se trompe et que l'on veux réimporter des images, tous part en vrille.
Les images se multiplie autant de fois qu'on appuie sur le bouton.
Si quelqu'un trouve la réponse je suis preneur.
Merci d'avance.
Étant tous nouveau en javascript, j'essaie de faire un aperçu d'image, avant l'upload sur un serveur.
J'ai trouver un tuto : https://openclassrooms.com/courses/dynamisez-vos-sites-web-avec-javascript/l-api-file
J'ai essayé de l'améliorer mais sans succès.
Juste les images se créé dans l'ordre avec leurs noms.
Tous se passe bien si on appuis sur le bouton une fois.
Si on se trompe et que l'on veux réimporter des images, tous part en vrille.
Les images se multiplie autant de fois qu'on appuie sur le bouton.
Si quelqu'un trouve la réponse je suis preneur.
Merci d'avance.
// fonction efface images et noms images
function effaceElements(element) {
while (element.firstChild) {
element.removeChild(element.firstChild);
}
}
// fonction création d'image
function createThumbnail(file, prev2, i) {
if (prev2.getElementsByTagName('img').length == i) {
var reader = new FileReader();
reader.addEventListener('load', function() {
var imgElement = document.createElement('img');
imgElement.style.maxWidth = '150px';
imgElement.style.maxHeight = '150px';
imgElement.src = this.result;
prev.appendChild(imgElement);
});
reader.readAsDataURL(file);
}
else {
var timer = setTimeout(function(){createThumbnail(file, prev2, i);}, 250);
}
}
var allowedTypes = ['png', 'jpg', 'jpeg', 'gif'];
var fileInput = document.querySelector('#AlbumA'); // sélectionne input avec les images
var prev = document.querySelector('#prev'); // sélectionne la div de l'aperçu des images
var prev2 = document.getElementById("prev"); // sélectionne la div de l'aperçu des images
var listof = document.getElementById("listof"); // sélectionne la div des noms d'images
effaceElements(prev2);
effaceElements(listof);
// envoie d'une image input dans fonction pour création d'image
fileInput.addEventListener('change', function() {
var nomFiles = [];
var files = this.files;
var filesLen = files.length;
var imgType;
for (var i = 0; i < filesLen; i++) {
nomFiles.push(files[i].name);
imgType = files[i].name.split('.');
imgType = imgType[imgType.length - 1];
if (allowedTypes.indexOf(imgType) != -1) {
createThumbnail(files[i], prev2, i);
}
}
var noms = nomFiles.join(" / ");
listof.innerHTML = '<p class="nomImport">Il y a '+filesLen+' fichier(s)<br/>'+noms+'</p>';
});