变量在javascript中未完全加载

时间:2016-04-29 20:16:03

标签: javascript html filereader

我正在尝试将图片转换为base64。我写了以下代码:

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);
}

但是当我提醒readerEvt.target.result它说131494个字符但是当我将它加载到一个变量时,只加载了10001个字符。这使得从base64解码后图像不完整。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我尝试了类似于上面尝试的代码示例的代码,它允许我将本地图像文件加载到base64数据中并相应地填充图像,没有错误。试试这个......

<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>

如果它仍不适合您,那么您尝试加载的图片可能存在一些问题。