Input File con vista previa de la imagen

Input File con vista previa de la imagen

Input File con vista previa de la imagen. En desarrollos de sistemas en algún modulo se requiere la carga de imágenes y mejor aun con una vista previa de la imagen.

Reemplazaremos la carga por defecto de HTML por otro mas elegante y usando vista previa de carga de imagen.

💣 Descarga sistemas PHP y Laravel COMPLETOS GRATIS
Recursos premium listos para usar en proyectos reales 💻
👥 +1000 desarrolladores · 🔥 Publicaciones diarias
🔥 Unirme al canal GRATIS ahora 👥 Grupo de Facebook
⏳ Enlaces disponibles por tiempo limitado
💻 Sistemas completos 🔌 Plugins PRO ⚡ Scripts listos 🔥 Recursos exclusivos

Input File con vista previa de la imagen

Como se muestra en la imagen, primero se muestra el botón Agregar. Luego, una vez que se selecciona una imagen, se muestra una vista previa.

Este es el código que se utilizo:

Cargar multiples imagenes con vista previas
Cargar multiples imagenes con vista previas

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="imagePreview" src="https://via.placeholder.com/350x150" alt="placeholder image goes here"></div>
<input id="uploadFile" type="file" name="image" class="img" />

CSS

#imagePreview {
width: 180px;
height: 180px;
background-position: center center;
background-size: cover;
-webkit-box-shadow: 0 0 1px 1px rgba(0, 0, 0, .3);
display: inline-block;
background-image: url('https://via.placeholder.com/350x150');
}

#uploadFile{
display: none
}

jQuery

$(function() {
$("#uploadFile").on("change", function()
{
var files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader) return; // no file selected, or no FileReader support

if (/^image/.test( files[0].type)){ // only image file
var reader = new FileReader(); // instance of the FileReader
reader.readAsDataURL(files[0]); // read the local file

reader.onloadend = function(){ // set image data as background of div
$("#imagePreview").css("background-image", "url("+this.result+")");
}
}
});
});

$('#imagePreview').click(function(){
$('#uploadFile').click();
});

Detalles del script anterior.- Lo que haremos es cumplir estos 3 puntos claves para lograr nuestro objetivo

  • Ocultar input file por defecto
  • Adjuntar la funcion .onclick() al marcador de posición de la imagen
  • Activar el clic de entrada manualmente

Segundo método: Previsualización carga de imagen

Vamos a utilizar la etiqueta <label> para representar y decorar nuestro input file tradicional.

A continuación, se muestra una demostración sencilla:

$('#file1').on('change', function() {
var files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader) return; // no file selected, or no FileReader support

if (/^image/.test(files[0].type)) { // only image file
var reader = new FileReader(); // instance of the FileReader
reader.readAsDataURL(files[0]); // read the local file

reader.onloadend = function() { // set image data as background of div
$('img').attr('src', reader.result).removeClass('default')
}
}
})

CSS

#file1 {
display: none;
}

img {
cursor: pointer;
width: 200px;
height: 200px;
}

img.default {
border: 2px gray dashed;
padding: 50px;
height: 150px;
width: 150px;
}

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="file1">
<label for="file1">
<img src="https://cdn3.iconfinder.com/data/icons/iconic-1/32/plus_alt-256.png" class="default" alt="">
</label>

Para resumir, podemos dinamizar la funcion de jQuery usando ciclos for o foreach y de ese modo generar múltiples campos para cargar imágenes con vista previas.

Cargar imagen con vista previa
Cargar imagen con vista previa

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.