2017-01-10 143 views
0

我想选择多个图像并将它们转换为Base64字符串。我把文件推入一个数组中。我的要求是,在转换成Base64字符串后,我想将它们推送到一个数组中。我无法将图像转换为Base64字符串。如何将图像转换为文件中的Base64字符串?

$("input[name=property_images]").change(function() { 
 
    var names = []; 
 
    for (var i = 0; i < $(this).get(0).files.length; ++i) { 
 
     names.push($(this).get(0).files[i].name); 
 
    } 
 
\t console.log(names); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<input type="file" name="property_images" multiple="multiple" />

+0

我和角度做过,只是警告你,如果你有超过一个图标更大的一个图像比你的浏览器在处理字符串时遇到的主要问题只要base64。它崩溃了我的铬,我根本无法使用base64方法! –

回答

2

改变你的函数来存储的base64值

$(document).ready(function(){ 
    $("input[name=property_images]").change(function() { 
     var imgBase64Arr = []; 
     var files = this.files; 
     for (var i = 0; i < files.length; i++) { 
     (function(i){ 
      var FR = new FileReader(); 
      FR.onload = function(e) { 
      imgBase64Arr.push(e.target.result);//adding base64 value to array 

      if(i === files.length -1)//after all files are porcessed 
       submitData(imgBase64Arr) 
      }; 
      FR.readAsDataURL(files[i]); 
     })(i); 
     } 

    }); 

    function submitData(imgBase64Arr){ 
    console.log(imgBase64Arr); 
    } 
}); 
+0

我试过你的代码未捕获TypeError:无法读取FileReader.FR.onload上未定义的 的属性'2' –

+0

你添加了多少个文件?尝试单个文件 – azad

+0

我现在尝试单个文件未捕获TypeError:无法读取属性'1'的未定义 at FileReader.FR.onload –

0

下面我们就单个图像为base64字符串转换。

function readFile() { 
 
    if (this.files) { 
 
    for(i=0;i<this.files.length;i++) 
 
     { 
 
    var FR= new FileReader(); 
 
    FR.onload = function(e) { 
 
     //document.getElementById("img").src  = e.target.result; 
 
     //document.getElementById("b64").innerHTML = e.target.result; 
 
     //$("#b64").append("<div></div>").html(e.target.result); 
 
     $('<img src="'+e.target.result+'" />').appendTo('#show-image'); 
 
     $('<p>'+e.target.result+'</p>').appendTo('#text-image'); 
 
    };  
 
    FR.readAsDataURL(this.files[i]); 
 
    } 
 
    } 
 
} 
 

 
document.getElementById("inp").addEventListener("change", readFile, false);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="inp" type='file' multiple> 
 

 

 
<div id='show-image'></div> 
 

 
<div id='text-image'></div>

+0

我需要多选图片 –

+1

@Vijay不要复制粘贴别人的答案 – azad

+0

@SagunthalaK请检查更新的答案。 –

相关问题