Blob URL'leri (ref W3C , resmi ad) veya Object-URLs (ref. MDN ve yöntem adı) bir Blob veya File nesnesiyle kullanılır.
src = "blob: https: //crap.crap " Ben bir video verdi src video blob url açtım ve açamıyorum ama nasıl mümkün olduğunu src etiketi ile çalışıyordu?
Blob URL'leri yalnızca tarayıcı tarafından dahili olarak oluşturulabilir. URL.createObjectURL()
daha sonra yayınlanabilecek olan Blob veya File nesnesine özel bir başvuru oluşturur URL.revokeObjectURL()
. Bu URL'ler yalnızca tarayıcının tek bir örneğinde ve aynı oturumda (ör. Sayfanın / belgenin ömrü) yerel olarak kullanılabilir.
Blob url nedir?
Neden kullanılır?
Blob URL / Nesne URL'si, Blob ve File nesnelerinin resimler, ikili veriler için indirme bağlantıları vb. İçin URL kaynağı olarak kullanılmasına izin veren sahte bir protokoldür.
Örneğin, bir Image nesnesi ham bayt-verisini, onunla ne yapacağını bilemeyeceği için işleyemezsiniz. Örneğin, resimlerin (ikili veri olan) URL'ler aracılığıyla yüklenmesini gerektirir. Bu, kaynak olarak URL gerektiren her şey için geçerlidir. İkili verileri yüklemek yerine, bir URL aracılığıyla geri sunmak yerine, sunucuya gitmeden doğrudan verilere erişmek için ekstra yerel bir adım kullanmak daha iyidir.
Ayrıca Base-64 olarak kodlanmış dizeler olan Data-URI'ye daha iyi bir alternatiftir . Data-URI ile ilgili sorun, her karakter JavaScript'te iki bayt almasıdır. Bunun üzerine Base-64 kodlaması nedeniyle% 33 eklenir. Bloblar, Data-URI'nin yaptığı gibi önemli bir ek yükü olmayan saf ikili bayt dizileridir, bu da onları işlemek için daha hızlı ve daha küçük hale getirir.
Bir sunucuda kendi blob url'mi yapabilir miyim?
Hayır, Blob URL'leri / Nesne URL'leri yalnızca tarayıcıda dahili olarak oluşturulabilir. BLOB sadece İkili Büyük OBject anlamına gelir ve bayt dizileri olarak saklansa da Blob'ları yapabilir ve File Reader API'sı ile File nesnesini alabilirsiniz. İstemci, verilerin ArrayBuffer veya bir Blob olarak gönderilmesini isteyebilir. Sunucu verileri saf ikili veri olarak göndermelidir. Veritabanları genellikle ikili nesneleri tanımlamak için Blob'u kullanır ve özünde temel olarak bayt dizilerinden bahsediyoruz.
Ek detayınız varsa
İkili verileri bir BLOB nesnesi olarak kapsüllemeniz, ardından URL.createObjectURL()
bunun için yerel bir URL oluşturmak için kullanmanız gerekir:
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 tarayıcılarında ön ek olabileceğini unutmayın , bu nedenle şunu kullanın:
var url = (URL || webkitURL).createObjectURL(...);