es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Validar archivos cargados por su ancho y alto en JavaScript.

Este código funciona bien. Restringe el tipo y tamaño de la imagen antes de subirla, pero además, me gustaría restringir la anchura y altura máxima de la imagen antes de subirla. Me gustaría restringir la carga si la anchura y altura no son correctas como lo hizo el script de abajo para la extensión y el tamaño. ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Se puede utilizar las propiedades HTMLImageElement.naturalWidth y HTMLImageElement.naturalHeight para obtener el ancho y alto de la imagen antes de cargarla. Luego se puede agregar una verificación a la función validateFile() para restringir la carga si el ancho y el alto no son correctos. Por ejemplo:

    document.getElementById("files").addEventListener("change", validateFile);
    
    function validateFile(){
      const allowedExtensions = ['jpg'],
            sizeLimit = 150000, 
            maxWidth = 500,
            maxHeight = 500;
    
      const { name:fileName, size:fileSize } = this.files[0];
    
      const fileExtension = fileName.split(".").pop();
    
      const img = new Image();
      img.src = URL.createObjectURL(this.files[0]);
      img.onload = function() {
        const width = img.naturalWidth;
        const height = img.naturalHeight;
    
        if(!allowedExtensions.includes(fileExtension)){
          alert("Esta no es una imagen válida");
          this.value = null;
        }else if(fileSize > sizeLimit){
          alert("Esta no es una imagen válida")
          this.value = null;
        } else if (width > maxWidth || height > maxHeight) {
          alert("Esta imagen es demasiado grande");
          this.value = null;
        }
      }
    }
    

Comments are closed.