Subir imagen usando JavaScript

Migel Hewage Nimesha 15 febrero 2024
  1. Cargar imagen de JavaScript
  2. JavaScript Cargar imagen sin ancho o alto definido
Subir imagen usando JavaScript

Un usuario puede cargar una imagen a partir de un archivo HTML creando un campo de entrada del tipo de archivo en la sección del cuerpo. En este artículo, mostraremos ejemplos de cómo cargar una imagen usando JavaScript.

Cargar imagen de JavaScript

Se usará una etiqueta div con una identificación de display_image para mostrar la imagen que se cargará como salida con ancho y alto definidos.

Sintaxis:

<input type ="file" id ="image_input" accept ="image/jpeg, image/png, image/jpg">
<div id="display_image"></div>

Para garantizar que la imagen cargada encaje perfectamente en el interior, las propiedades de la imagen deben agregarse a un archivo CSS con los valores adecuados. Aquí, el borde no es una propiedad esencial que deba agregarse, pero hará que el usuario vea fácilmente dónde aparece la imagen.

#display-image{
width: 500px;
height: 325px;
border: 2px solid black;
background-position: center;
background-size: cover;
}

A continuación, se debe crear un archivo JavaScript para obtener acceso al campo de entrada y adjuntar un detector de eventos "cambio", que es un evento que se ejecuta cuando el usuario ha cambiado el valor de un elemento. Bajo este detector, un usuario debe obtener acceso al objeto FileReader que permitirá que las aplicaciones web lean el contenido de los archivos o búferes de datos sin procesar almacenados en la máquina local del usuario y adjunte un detector de eventos "load" cuando toda la página está completamente cargada, incluidas todas las fuentes dependientes, como imágenes, archivos CSS y archivos JavaScript.

En pocas palabras, la imagen cargada se traduce a un formato visualizable. La imagen cargada se almacenará en la variable uploadImage, y esta variable se utilizará para inicializar la propiedad backgroundImage en CSS.

const image_input = document.querySelector('#image_input');

image_input.addEventListener('change', function() {
  const file_reader = new FileReader();
  file_reader.addEventListener('load', () => {
    const uploaded_image = file_reader.result;
    document.querySelector('#display_image').style.backgroundImage =
        `url(${uploaded_image})`;
  });
  file_reader.readAsDataURL(this.files[0]);
});

Código fuente completo:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript Upload Image </title>
<style>
#display_image{
  width: 500px;
  height: 325px;
  border: 2px solid black;
  background-position: center;
  background-size: cover;
}
</style>
</head>

<body>

  <input type="file" id="image_input" accept="image/jpeg, image/png, image/jpg">
  <div id="display_image"></div>

<script>
const image_input = document.querySelector("#image_input");

image_input.addEventListener("change", function() {
  const file_reader = new FileReader();
  file_reader.addEventListener("load", () => {
    const uploaded_image = file_reader.result;
    document.querySelector("#display_image").style.backgroundImage = `url(${uploaded_image})`;
  });
  file_reader.readAsDataURL(this.files[0]);
});
</script>
</body>
</html>

Producción:

cargar imagen usando javascript con ancho y alto definidos

JavaScript Cargar imagen sin ancho o alto definido

También podemos subir una imagen sin ancho ni alto definido en su tamaño original en JavaScript. Siga los pasos a continuación.

  • Comience creando un archivo HTML y configure el archivo de tipo de entrada asignando la identificación como un archivo con la función de cambio validación de archivo () que llamará a la imagen cargada.
  • A continuación, utilice el método de documento .getElementById() dentro de la función filevaildation() para seleccionar el elemento por sus ID a través de var image = document.getElementById(‘imagen cargada’);.
  • Agregue un método estático URL.createObjectURL() al programa para pasar la URL a uploaded_image.src que cargará la imagen cargada por el usuario en el navegador como uploaded_image.src=URL.createObjectURL(event.target.files[0]);.
  • Para comprobar si el usuario ha seleccionado algún archivo, un bucle como if(selected_file.files.length>0) y para obtener el tamaño del archivo seleccionado const file_size=selected_file.files.item(i).size; puede ser usado.
  • A continuación, el tamaño del archivo se convertirá en bytes. Con el uso de Math.round((file_size/1024)); función se puede convertir a cualquier unidad.

Código fuente completo:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JavaScript Upload Image</title>
</head>
<body>
    <input type="file" id="file" onchange="FileValidation(event)" >
    <br><br><br>
    <h2>Uploaded Image by the User</h2>
    <img id="uploaded image">
</body>
<script>
    FileValidation = (event) => {
        var uploaded_image = document.getElementById('uploaded image');
    uploaded_image.src = URL.createObjectURL(event.target.files[0]);
        const selected_file = document.getElementById("file");
        if (selected_file.files.length > 0) {
            for (const i = 0; i <= selected_file.files.length - 1; i++) {
                const file_size = selected_file.files.item(i).size;

                const file = Math.round((file_size / 1024));
                }
                }
                }
</script>
</html>

Producción:

cargar imagen usando javascript sin ancho y alto definidos

A partir del código anterior, el usuario puede seleccionar y cargar cualquier tipo de archivo, pero no se puede mostrar. Con implementaciones adicionales, se pueden realizar múltiples cargas de imágenes agregando más codificación a los programas anteriores según el requisito.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - JavaScript Upload