slowjet

is a part of a carburetor

BLOB とは何か

a[download] と Blob で任意のファイルを作ってダウンロードさせる
で唐突に出てきた BLOB という物が何かという説明をちょっと。

32KB以上の大きなデータを扱う場合は、
Large Object(LOB) Data Types を利用する。
BLOB はこれのひとつで、Binary Large OBject の略。
Binary とあるように、BLOB は文字列はもちろん、
巨大な画像、音声ファイル、動画ファイルなどを扱うことができる。

Large Object Data Types には他にも

  • CLOB (Character Large OBject)
  • DBCLOB (Double Byte Charater Larget OBject)

などがある。

File API で定義されているのは Blob インターフェースのみ、
つまり File API を通して利用できるのは BLOB だけ。

BLOB 自体は Binary Large OBject の略なので BLOB 表記が正しいが
File API で定義されているのは Blob インターフェースなので Blob と表記している。
ので、表記揺れではありません。

Blob インターフェースを通して BLOB を扱う。

Blob オブジェクトに

var blob = new Blob([blobParts], blobPropertyBag);

// blobParts: ここで指定したデータを元に Blob オブジェクトを作る
// 基本的には DOMString ≒ String(文字列)でOK
// blobPropertyBag: typeのみ、MIME-TYPE を指定する { type: 'text\/plain' }
// デフォルトは UTF-8 でエンコーディングされるが、charset で指定することも可能
// { type: 'text\/plain;charset=UTF-8' }

var data = { a: 1 };
var blob = new Blob([JSON.stringify(data)], { type: 'application\/json' });

// => Blob {type: "text/javascript", size: 7, slice: function}

FileReader で Blob を読み出し

FileReader についてはまた別途書く

var fileReader = new FileReader();
fileReader.addEventListener('load', function() {
  console.log(fileReader.result);
}, false);
fileReader.readAsText(blob);

// => {"a":1}

Resources