Script vista previa de imagenes

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Subir Img</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
 
<body>
    <div class="container">
        <div class="row">
            <div class="col-lg-5 m-auto">
                <div class="card">
                    <div class="card-body">
                        <form action="" method="post" enctype="multipart/form-data" id="img" class="text-center">
                            <h5 class="card-title">Selecciona una imagen</h5>
                            <label for="imagen" id="subir"><i class="fas fa-image fa-lg"></i></label>
                            <input type="file" class="d-none" id="imagen" name="imagen">
                            <div class="d-none" id="vista_previa">
                                <img width="100%" id="previa" class="img-thumbnail">
                                <button id="publicar" type="button" class="btn btn-dark">Publicar</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- Script para crear la vista previa -->
    <script>
    
        // Seleccionamos el id de nuestro input file
        const imagen = document.getElementById("imagen");
        
        // Ponemos a la escucha del evento change
        imagen.addEventListener("change", (e) => {
            const name = e.target.files[0];
            
            //Creamos una url temporal de nuestro imagen a traves del file
            let img = URL.createObjectURL(name);
            
            //Le agregamos la url temporal en el atributo src de la etiqueta img
            document.getElementById("previa").src = img;
            
            //Le quitamos la clase d-none de bootstrap para hacer visible
            document.getElementById("vista_previa").classList.remove("d-none");
        });
    
    </script>
    
    <!-- Hace referencia a los icono de font Awesome puedes utilizar el cdn o descargar-->
    <script src="js/all.min.js"></script>
</body>
 
</html>