Blob

Blob オブジェクトはファイルに似たオブジェクトで、immutable な生データです。データを表す blob は必ずしも JavaScript ネイティブなフォーマットではありません。File インターフェースは Blob を基礎にしており、その機能を継承する一方で、ユーザのシステム上のファイルをサポートするための機能を拡張しています。

Blob を生成する簡単な方法は BlobBuilder インターフェースを使用することです。BlobBuilder インターフェースによって、データを反復的に blob に追加し、利用できる段階になったらそれを受け取ることができます。他にも、slice() メソッドを利用し、他の blob データからその一部を blob として生成する方法があります。新しいバージョンでは、Blob() コンストラクタがサポートされているかもしれません。コンストラクタは BlobBuilder よりも簡単に Blob を生成できる方法です。

Note: slice() メソッドは Firefox では blob.mozSlice(), WebKit では blob.webkitSlice() とベンダー接頭辞つきで実装されています。また、古いバージョンにおいて slice() がベンダー接頭辞なしで実装されていることがありますが、引数の定義が異なります。詳しくはページ下部の注釈をご覧下さい。

プロパティ

名前 説明
size unsigned long long Blob オブジェクトが保持するデータの容量。バイトで示される。読み取り専用
type DOMString Blob オブジェクトが保持するデータの MIME タイプを示唆する ASCII エンコードされた文字列。すべて小文字で、MIME タイプが不明な場合は空となる。読み取り専用

メソッド

slice()

もとの Blob から、指定した範囲のバイトを含む新しい Blob オブジェクトを返します。

Blob slice(
  optional long long start,
  optional long long end,
  optional DOMString contentType);

引数

start Optional
新しい Blob の最初のバイトとなるインデックスを指定。負の値を指定した場合は、バイト列の最後から最初へのオフセットとして扱われる。例えば、-10 は Blob の最後から10番目のバイトを指す。規定値は0。
end Optional
新しい Blob の最後のバイトとなるインデックスを指定。負の値を指定した場合は、バイト列の最後から最初へのオフセットとして扱われる。例えば、-10 は Blob の最後から10番目のバイトを指す。規定値は size
contentType Optional
返す Blob の MIME タイプを指定。規定値は空文字列。

返り値

もとの Blob から、指定した範囲のバイトを含む新しい Blob オブジェクト。

Notes

start がもとの Blobsize よりも大きい場合、返ってくる Blobsize は0であり、何のデータも含みません。

ブラウザの互換性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 5 4 10 11.10 5.1
slice() 10 webkit 13
5 moz
? 未サポート 5.1 (534.29) webkit
Blob() constructor ? (有) ? ? ?
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support ? ? ? ? ?

slice() の実装について

slice はもともと第2引数に length をとり、新しい Blob のバイト長を指定するものとして定義されていました。start + length がもとの Blobsize を超えた場合、返ってくる Blob は、start からもとの Blob の末端までを含みます。

この slice メソッドは Firefox 4, WebKit, そして Opera 11.10 で実装されました。しかし、構文が Array.slice()String.slice() と異なることが分かり、Gecko と WebKit はこのメソッドを削除し、現在の構文を Blob.mozSlice/Blob.webkitSlice として実装しました。Opera は古い実装のままですが、新しい構文の実装への変更を検討中です (参考: バグ 725289)。WebKit はまだ接頭辞を削除していません。(参考: WebKit bug 78111).

参考

Document Tags and Contributors

Contributors to this page: myakura
最終更新者: myakura,