2016-05-10 34 views
0

私は入力ファイルを経由してファイルをバイト[]に変換しようとします。 私がFileReaderをして​​みましたが、私は何かを見逃している必要があります入力=ファイルをバイト配列に変換

var bytes = []; 
var reader = new FileReader(); 
reader.onload = function() { 
    bytes = reader.result; 
}; 
reader.readAsArrayBuffer(myFile); 

をしかし、最終的には、私のバイトのvarはバイト配列をコンテンツはありません。

私はこの記事を見ました:Getting byte array through input type = fileが、それは[]のバイトで終了していない、とreadAsBinaryStringは()私は何を欠場か

を推奨されていませんか?

+0

私はこれを見ましたが、バイトで終わらない[ – Lempkin

+0

はい、そうです。文字列はcharの配列です。charがバイトの場合、文字列はバイトの配列です – Alexis

+0

また、readAsBinaryString()は廃止されました。もう使用できません。 – Lempkin

答えて

1

同様の問題に直面し、 'reader.result'が 'byte []'として終わることはありません。だから私はそれをUint8Arrayオブジェクトにキャストしました。これも完全なバイト[]ではないので、私はそこからバイト[]を作成しなければなりませんでした。ここに私のこの問題に対する解決策があり、それは私のためにうまくいった。

var reader = new FileReader(); 
var fileByteArray = []; 
reader.readAsArrayBuffer(myFile); 
reader.onloadend = function (evt) { 
    if (evt.target.readyState == FileReader.DONE) { 
     var arrayBuffer = evt.target.result, 
      array = new Uint8Array(arrayBuffer); 
     for (var i = 0; i < array.length; i++) { 
      fileByteArray.push(array[i]); 
     } 
    } 
} 

「fileByteArray」は、あなたが探しているものです。コメントを見て、同じことをしたように思えますが、やはりこのアプローチを共有したいと思っていました。

+0

コードを正しくインデントするためにしばらく時間を取ってください。左側に10,15の空の列を持つ意味はありません! – GhostCat

+0

ありがとうございました。 –

関連する問題