2016-04-29 4 views
5

Ich versuche, Bild in Base64 zu konvertieren. Ich habe den folgenden Code geschrieben:Variable ist unvollständig in Javascript geladen

if (file) 
{ 
    var reader = new FileReader(); 
    reader.onload = function(readerEvt) 
    { 
     alert(readerEvt.target.result); 
     var image  = readerEvt.target.result; 
     var base64image = image.split(',')[1]; 
     var key   = 'image'+i; 
     images[key]  = image; 
     //$('#image_preview').attr('src', readerEvt.target.result); 
    }; 
    reader.readAsDataURL(file); 
} 

Aber wenn ich die readerEvt.target.result alarmieren sagt es 131.494 Zeichen, aber wenn ich es auf eine Variable nur 10001 Zeichen geladen wird geladen. Dies macht das Bild unvollständig, wenn es von base64 zurückdekodiert wird. Jede Hilfe wird geschätzt.

+0

Haben Sie sich das angeschaut: http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript – dYale

+0

Die base64image.length gibt mir 131494 Aprox Buchstaben aber wenn Ich versuche Alarm zu verwenden, nur 10001 wird geladen. Gibt es hier eine Einschränkung? –

+0

Es sollte nicht sein. Ich habe gerade einen Test mit Onload (sowie Onloadend) durchgeführt und beide funktionieren gut, natürlich mit einer erfolgreichen Ladung, da onloadend aufgerufen wird, ob erfolgreich oder nicht. Ich probierte es auf einer Dateigröße von mehr als 3,5 Mb und es lud die Daten als base64 und füllte ein Bild entsprechend. – ManoDestra

Antwort

2

Ich habe versucht, ähnlichen Code zu dem Code-Beispiel, das Sie oben versucht, und es mir erlaubt, eine lokale Bilddatei in Base64-Daten zu laden und ein Bild entsprechend ohne Fehler zu füllen. Versuchen Sie, diese ...

<input id="txtFile" type="file" onchange="loadFile();"> 
<br> 
<img id="imgTest"> 
<script> 
function loadFile() { 
    var file = document.getElementById('txtFile').files[0]; 
    if (file) { 
     var reader = new FileReader(); 
     reader.onload = function(readerEvt) { 
      var image = readerEvt.target.result; 
      var base64image = image.split(',')[1]; 
      console.log(readerEvt.target.result); 
      document.getElementById('imgTest').src = readerEvt.target.result; 
     }; 

     reader.readAsDataURL(file); 
    } else { 
     console.log('Exception'); 
    } 
} 
</script> 

Wenn es noch nicht für Sie arbeiten, dann gibt es vielleicht ein Problem mit dem Bild, das Sie laden wollen.

+0

es arbeitet mit onload als auch, aber was ich wissen wollte ist, warum alert nur 10001 Zeichen zeigt? –

+0

änderte meine Antwort. – ManoDestra