Blob URL(ref W3C、公式名)またはObject-URLs(ref。MDNおよびメソッド名)は、BlobまたはFileオブジェクトで使用されます。
src = "blob:https://crap.crap "ビデオのsrcにあるblobのURLを開いたところ、エラーが発生し、開くことができませんでしたが、srcタグを操作していたのですが、どうすればよいですか。
Blob URLは、ブラウザーによって内部的にのみ生成できます。URL.createObjectURL()
を使用して後で解放できるBlobまたはFileオブジェクトへの特別な参照を作成しURL.revokeObjectURL()
ます。これらのURLは、ブラウザの単一インスタンスと同じセッション(つまり、ページ/ドキュメントの存続期間)でのみローカルで使用できます。
blob urlとは何ですか?
なぜそれが使われるのですか?
Blob URL / Object URLは、BlobオブジェクトとFileオブジェクトを画像やバイナリデータのダウンロードリンクなどのURLソースとして使用できるようにする疑似プロトコルです。
たとえば、Imageオブジェクトは、それをどうするかわからないため、生のバイトデータを渡すことはできません。たとえば、URL経由で読み込まれる画像(バイナリデータ)が必要です。これは、URLをソースとして必要とするものすべてに適用されます。バイナリデータをアップロードする代わりに、URLを介してデータを提供します。サーバーを経由せずにデータに直接アクセスできるようにするには、追加のローカルステップを使用することをお勧めします。
また、Base-64としてエンコードされた文字列であるData-URIのより良い代替手段です。Data-URIの問題は、JavaScriptでは各文字が2バイトを取ることです。その上、Base-64エンコーディングにより33%が追加されます。Blobは純粋なバイナリバイト配列であり、Data-URIのように大きなオーバーヘッドがないため、処理が高速で小さくなります。
サーバーで独自のblob URLを作成できますか?
いいえ、Blob URL / Object URLはブラウザーの内部でのみ作成できます。BLOBはバイナリラージオブジェクトを意味し、バイト配列として保存されますが、ファイルリーダーAPIを介してBlobを作成してFileオブジェクトを取得できます。クライアントは、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); // clean-up memory
document.body.appendChild(this); // add image to DOM
}
img.src = url; // can now "stream" the bytes
URL
webkit-browsersでは接頭辞が付いている場合があるので、次のように使用してください。
var url = (URL || webkitURL).createObjectURL(...);