ゆったりWeb手帳

気になったことをのんびり書くよ

🎞

Blobエラーで困った

Blobを使うとChromeがエラーになる

5MB程度のファイルをBlobを使ってChromeからファイルとして出力しようと思ったが、Chromeがクラッシュしてしまい、うまくいかない。
post-image
post-image
というか小さなサイズのファイルでも正しい形式にならない。
データをUint8Array型からファイルに変換するときの失敗例
JavaScript
const data = new Uint8Array(fileObject)
const blob = new Blob(data, {type: 'text/plain'})

配列でないとダメ

Uint8Array型は配列だと思ってたのですが、さらに配列に入れてやらないとダメらしい。
[]で囲むだけでうまくいきました。
JavaScript
const blob = new Blob([data], {type: 'text/plain'})

ファイルのダウンロード

ちなみに、これをブラウザからダウンロードさせるときは、以下のようにして、URLを作成します。
JavaScript
const url = window.URL.createObjectURL(blob)
これを<a>タグのhrefに指定してあげればOK。
ていうかよく見たらMDNにちゃんと書いてあった。
Blob | MDN
次の記事Chromeでdata channelを使って大量にデータを送ると途中で止まる