ArrayBufferから生成されているバイナリデータでいっぱいの型付き配列があります
var myArr = new Uint8Array(myBuffer);
私はこれをユーザーに提示しています
var blob = new Blob(myArr, {type: "octet/stream"};
var blobURL = URL.createObjectURL(blob);
リンクを挿入します
"<a href=" + blobUrl + " download=" + filename "/a>"
後で、ユーザーにディスクからファイルを選択させ、ファイルリーダーを使用して
var reader = new FileReader();
reader.onload = function () {
console.log(reader.result);
};
reader.readAsArrayBuffer(sourceFile);
問題は、私が何をしても、ファイルの内容の「文字列」を取得しているように見えることです。実際、ファイルを保存すると開くことができ、人間が読める形式になっています。 I.E.私のUint8Arrayが{"0" : "51", "1" : "52", "2" : "53" }
だった場合
ダウンロードしたblobをテキストエディタで開くことができますが、「515253」が表示されますが、これが何が起こっているのかはわかりません。
適切にフォーマットされたファイルのファイルダウンロードへのリンクを作成して、正しい値を取得して読み戻すにはどうすればよいですか?
結局のところ、問題は、Blobの作成時に構文エラーが発生したことでした。
修正されたコードはvar blob = new Blob([myArr], {type: "octet/stream"};
のようになりました
すでにArrayBuffer引数を渡しているのに、なぜ角かっこ表記が必要なのか、よくわかりません。冗長に見えますか?
Mozillaによると
var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'});