Devsway

日々の記録とか記憶とか。


参考


src=”blob:https://example.com.video”とかってなに?


Blob URLは、ブラウザによって内部でのみ生成できます。 URL.createObjectURL()は、URL.revokeObjectURL()を使用して後で解放できるBlobまたはFileオブジェクトへの特別な参照を作成します。これらのURLは、ブラウザの単一インスタンスおよび同じセッション(つまり、ページ/ドキュメントの寿命)でのみローカルで使用できます。


BLOB URLとは何ですか?


なぜ使用されるのですか?


Blob URL /OBJECT URLは、画像、バイナリデータのダウンロードリンクなどのURLソースとしてBlobおよびFileオブジェクトを使用できるようにするための擬似プロトコルです。


たとえば、Imageオブジェクトの生のバイトデータは、それをどう処理するかわからないため、渡すことはできません。たとえば、URLを介して読み込まれる画像(バイナリデータ)が必要です。これは、ソースとしてURLを必要とするものすべてに適用されます。バイナリデータをアップロードしてURL経由で提供する代わりに、サーバーを経由せずにデータに直接アクセスできるように、追加のローカルステップを使用することをお勧めします。


また、Base-64としてエンコードされた文字列であるData-URIの代替としても適しています。 Data-URIの問題は、JavaScriptで各文字が2バイトを使用することです。さらに、Base-64エンコードにより33%が追加されます。ブロブは純粋なバイナリバイト配列であり、Data-URIのように大きなオーバーヘッドがないため、処理が高速化および小型化されます。


サーバー上で独自のBLOB URLを作成できますか?


いいえ、Blob URL / Object URLは、ブラウザの内部でのみ作成できます。 BLOBを作成し、File Reader APIを介してFileオブジェクトを取得できますが、BLOBは単なるバイナリラージOBjectを意味し、バイト配列として格納されます。クライアントは、ArrayBufferまたはBlobとして送信されるデータを要求できます。サーバーは、データを純粋なバイナリデータとして送信する必要があります。データベースはしばしばBlobを使用してバイナリオブジェクトも記述しますが、基本的には基本的にバイト配列について説明しています。


さらに


バイナリデータをBLOBオブジェクトとしてカプセル化し、URL.createObjectURL()を使用してローカルURLを生成する必要があります。


var blob = new Blob([arrayBufferWithPNG]、{type: "image / png"})、
    url = URL.createObjectURL(blob)、
    img = new Image();

img.onload = function(){
    URL.revokeObjectURL(this.src); //メモリをクリーンアップします
    document.body.appendChild(this); //画像をDOMに追加します
}

img.src = url; //バイトを「ストリーミング」できるようになりました

URLにはwebkit-browsersでプレフィックスが付けられる場合があるため、次を使用します。


var url =(URL || webkitURL).createObjectURL(…);


参考


https://stackoverflow.com/questions/30864573/what-is-a-blob-url-and-why-it-is-used




カテゴリー

オレオレIT用語辞典