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.

Por qué este código devuelve undefined cuando lo ejecuto por primera vez.

Quiero obtener una cadena base64 de una imagen cargada. La primera vez que ejecuto el código, devuelve ‘undefined’. Cuando lo ejecuto después, funciona bien. ¿Cómo puedo solucionarlo?

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Carga</title>
  </head>
  <body>
    <input type="file" id="file">
    <button id="button" onclick="upload()">Cargar</button>
    <script type="text/javascript">
      var resultado;

  function getBase64(file) {
     var reader = new FileReader();
     reader.readAsDataURL(file);
     reader.onload = function () {
       resultado = reader.result;
     };
     reader.onerror = function (error) {
       console.log('Error:', error);
     };
     return resultado;
  }

  function upload() {
    var file = document.querySelector('input').files[0];
    console.log(getBase64(file));
  }
</script>
</body>
</html>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que la función getBase64 está retornando result antes de que el evento onload haya terminado. Para solucionarlo, puedes mover la sentencia return result dentro del evento onload, así:

    “`html

Comments are closed.