2016-04-29 13 views
5

イメージをbase64に変換しようとしています。変数がjavascriptで不完全に読み込まれています

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

が、私は、それは131494個の文字を言いますが、私はそれを変数に読み込むときだけ10001文字がロードされているreaderEvt.target.resultを警告:私は、次のコードを書かれています。これにより、base64からデコードされた画像が不完全になります。どんな助けもありがとう。

+0

これを見ましたか?http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript – dYale

+0

base64image.lengthは私に131494 aproxのチャレーターを与えますが、私はアラートを使用しようとすると、10001がロードされています。ここには限界がありますか? –

+0

すべきではありません。私はちょうどonload(とonloadend)を使ってテストを実行しました。そして、成功したかどうかにかかわらず、onloadendが呼び出されるので、成功したロードを与えてもうまく動作します。私は3.5 Mb以上のファイルサイズでそれを試し、base64としてデータをロードし、それに応じて画像を取り込みました。 – ManoDestra

答えて

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> 

これを試してみてください、そしておそらくロードしようとしている画像といくつかの問題があります。

+0

もonloadで動作しますが、私が知りたいのは、アラートが10001文字しか表示されない理由です。 –

+0

私の答えを修正しました。 – ManoDestra

関連する問題