Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

214
Visualizações
¿La condición del tamaño de archivo hace que la cadena base 64 desaparezca?

Basado en mi publicación anterior ¿Cómo puedo convertir una imagen en una cadena Base64 desde una fuente de imagen? Me gustaría configurar mi archivo de imagen para que tenga un límite de tamaño pero, sin embargo, no podría hacer que funcione si lo configuro con una condición.

aquí el código de abajo

 function encodeImageFileAsURL() { var filesSelected = document.getElementById("inputFileToLoad").files; if (filesSelected.length > 0) { var fileToLoad = filesSelected[0]; var fileReader = new FileReader(); fileReader.onload = function(fileLoadedEvent) { var srcData = fileLoadedEvent.target.result; // <--- data: base64 var newImage = document.createElement('img'); newImage.src = srcData; document.getElementById("output").src = newImage.src; alert("Converted Base64 version is " + document.getElementById("output").src); console.log("Converted Base64 version is " + document.getElementById("output").src); } fileReader.readAsDataURL(fileToLoad); } } var uploadField = document.getElementById("inputFileToLoad"); uploadField.onchange = function() { // 1000000 = 1MB if (this.files[0].size > 1000000) { alert("File is too big!"); this.value = ""; } else if (this.files[0].size < 100000) { alert("File not recommended size!"); this.value = ""; } }; $('#inputFileToLoad').change(function(event) { if(event.target.files[0]){ // var tmppath = URL.createObjectURL(event.target.files[0]); $("img#output").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0])); }else{ alert('Image size mismatched.') } // $("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>"); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="inputFileToLoad" type="file" onchange="encodeImageFileAsURL();" /> <img src="https://mdbootstrap.com/img/Photos/Others/placeholder-avatar.jpg" id="output" width="100" height="100" style="border-radius: 50%;" />

Si tengo mi condición, mis datos de base 64 ya no se muestran, ¿cómo puedo solucionar este problema?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El código de la pregunta tiene tres controladores de eventos independientes para #inputFileToLoad onchange Hay uno declarado en el elemento en el HTML que llama a encodeImageFileAsURL() . Esto luego se sobrescribe en la línea 25 con uploadField.onchange = function() { evitando que se llame a encodeImageFileAsURL() . Luego se agrega un controlador de cambio adicional en la línea 36 con $('# onchange $('#inputFileToLoad').change(function(event) { .

Puede colocar toda esta lógica en un solo controlador de eventos para onchange . Esto le permite ordenar la lógica como desee, también puede regresar si hay un problema (por ejemplo, el tamaño del archivo es demasiado grande) que impide que se ejecute el código restante.

En el siguiente ejemplo tengo:

  • Se agregó el evento que se pasará como parámetro para encodeImageFileAsURL(event) en HTML onchange="encodeImageFileAsURL(event);
  • Se movió el código de los diversos controladores de eventos a la función encodeImageFileAsURL , cambiando las referencias de this a event.target.
  • Se agregaron algunas declaraciones de devolución si las comprobaciones del tamaño del archivo fallan para evitar que se ejecute el código restante

El ejemplo está abajo,

 function encodeImageFileAsURL(event) { // File Size Checks if (event.target.files[0].size > 1000000) { alert("File is too big!"); event.target.value = ""; return; } else if (event.target.files[0].size < 100000) { alert("File not recommended size!"); event.target.value = ""; return; } // Update image on page if (event.target.files[0]) { // var tmppath = URL.createObjectURL(event.target.files[0]); $("img#output").fadeIn("fast").attr('src', URL.createObjectURL(event.target.files[0])); } else { alert('Image size mismatched.') return; } // Base64 conversion var filesSelected = event.target.files; if (filesSelected.length > 0) { var fileToLoad = filesSelected[0]; var fileReader = new FileReader(); fileReader.onload = function(fileLoadedEvent) { var srcData = fileLoadedEvent.target.result; // <--- data: base64 var newImage = document.createElement('img'); newImage.src = srcData; document.getElementById("output").src = newImage.src; alert("Converted Base64 version is " + document.getElementById("output").src); console.log("Converted Base64 version is " + document.getElementById("output").src); } fileReader.readAsDataURL(fileToLoad); } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="inputFileToLoad" type="file" onchange="encodeImageFileAsURL(event);" /> <img src="https://mdbootstrap.com/img/Photos/Others/placeholder-avatar.jpg" id="output" width="100" height="100" style="border-radius: 50%;" />

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda