HTML & JS – afficher une image miniature suite à l’utilisation d’un input type=’file’
Introduction
Voici un script html – js permettant d’afficher une miniature si un internaute upload un fichier image via un <input type="file">
Ce script utilise l’objet javascript FileReader
, qui permet de lire les fichiers stockés dans un navigateur suite à un upload, plus d’info sur cet objet dans le MDN
Afficher une miniature dans un formulaire avec input type=’file’
Fichier index.html
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #preview{ width: 200px; display: inline-block; } #preview img{ width: 100%; } </style> </head> <body> <form action="my-script.php" enctype="multipart/form-data" method="post"> <div><input type="file" onchange="handleFiles(files)" id="upload" multiple name="file"></div> <div><label for="upload"><span id="preview"></span></label></div> <div><input type="submit" value="Envoyer"></div> </form> <script> function handleFiles(files) { var imageType = /^image\//; for (var i = 0; i < files.length; i++) { var file = files[i]; if (!imageType.test(file.type)) { alert("veuillez sélectionner une image"); }else{ if(i == 0){ preview.innerHTML = ''; } var img = document.createElement("img"); img.classList.add("obj"); img.file = file; preview.appendChild(img); var reader = new FileReader(); reader.onload = ( function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); } } } </script> </body> </html>