kzen.dev
  • Sorular
  • Etiketler
  • Kullanıcılar
Bildirimler
Ödüller
Kayıt
Kaydolduktan sonra, sorularınıza verilen yanıtlar ve yorumlar size bildirilecektir.
Oturum aç
Zaten bir hesabınız varsa, yeni bildirimleri kontrol etmek için giriş yapın.
Eklenen sorular, cevaplar ve yorumlar için ödüller olacaktır.
Daha
Kaynak
Düzenle
Waqas Tahir
Waqas Tahir
Question

Blob URL nedir ve neden kullanılır?

Blob URL ile ilgili çok sorun yaşıyorum.

YouTube'da bir video etiketinin src sini arıyordum ve videonun src gibi olduğunu buldum:

src="blob:https://crap.crap"

Videonun src kısmında bulunan blob URL'sini açtığımda hata verdi. Bağlantıyı açamıyorum ama src etiketi ile çalışıyordu. Bu nasıl mümkün olabilir?

Gereksinimler:

  • Blob URL nedir?
  • Neden kullanılır?
  • Bir sunucuda kendi blob URL'mi oluşturabilir miyim?
  • Herhangi bir ek detayınız varsa
272 2015-06-16T10:09:37+00:00 3
 Community
Community
Edited question 2019ööp47öö8 Nisan 2019 в 8:47
Programlama
html5-video
bloburls
This question has 1 Cevap in English, to read them log in to your account.
Solution / Answer
Anonim kullanıcı
2015ööp38öö2 Haziran 2015 в 2:38
2015-06-17T02:38:28+00:00
Daha
Kaynak
Düzenle
#27854997

Blob URL'leri (ref W3C, resmi ad) veya Object-URL'ler (ref. MDN ve yöntem adı) bir Blob veya Dosya nesnesi ile kullanılır.

src="blob:https://crap.crap" src'sinde bulunan blob url'sini açtım video bir hata verdi ve açamıyorum ama src ile çalışıyordum etiketi nasıl mümkün olabilir?

Blob URL'leri yalnızca tarayıcı tarafından dahili olarak oluşturulabilir. URL.createObjectURL() Blob veya Dosya nesnesine özel bir referans oluşturur ve bu referans daha sonra URL.revokeObjectURL() kullanılarak serbest bırakılabilir. Bu URL'ler yalnızca tarayıcının tek bir örneğinde ve aynı oturumda (yani sayfanın/belgenin ömrü boyunca) yerel olarak kullanılabilir.

Blob url nedir?
Neden kullanılır?

Blob URL/Object URL, Blob ve Dosya nesnelerinin görüntüler, ikili veriler için indirme bağlantıları ve benzeri şeyler için URL kaynağı olarak kullanılmasına izin veren sözde bir protokoldür.

Örneğin, bir Image nesnesine ham bayt verisi veremezsiniz, çünkü bununla ne yapacağını bilemez. Örneğin resimlerin (ikili veri olan) URL'ler aracılığıyla yüklenmesini gerektirir. Bu, kaynak olarak bir URL gerektiren her şey için geçerlidir. İkili veriyi yüklemek ve ardından bir URL aracılığıyla geri sunmak yerine, veriye bir sunucu üzerinden gitmeden doğrudan erişebilmek için ekstra bir yerel 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, JavaScript'te her karakterin iki bayt almasıdır. Bunun üzerine Base-64 kodlaması nedeniyle %33'lük bir ekleme yapılır. Bloblar, Data-URI'nin yaptığı gibi önemli bir ek yüke sahip olmayan saf ikili bayt dizileridir, bu da onları daha hızlı ve daha küçük hale getirir.

Bir sunucuda kendi blob url'mi yapabilir miyim?

Hayır, Blob URL'leri/Obje URL'leri yalnızca tarayıcıda dahili olarak oluşturulabilir. BLOB sadece İkili Büyük Nesne anlamına gelir ve bayt dizileri olarak depolanır, ancak Dosya Okuyucu API aracılığıyla Blob oluşturabilir ve Dosya nesnesi alabilirsiniz. Bir istemci, verilerin ArrayBuffer ya da Blob olarak gönderilmesini talep edebilir. Sunucu verileri saf ikili veri olarak göndermelidir. Veritabanları genellikle ikili nesneleri tanımlamak için Blob kullanır ve özünde temel olarak bayt dizilerinden bahsediyoruz.

eğer varsa Ek ayrıntı

İkili verileri bir BLOB nesnesi olarak kapsüllemeniz ve ardından bunun için yerel bir URL oluşturmak üzere URL.createObjectURL() 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`nin webkit tarayıcılarda ön ekli olabileceğini unutmayın, bu nedenle kullanın:

var url = (URL || webkitURL).createObjectURL(...);
 Bakudan
Bakudan
Edited answer 2017ösp33ös16 Haziran 2017 в 4:33
File API
w3c.github.io
271
0
 Robert
Robert
2015ööp22öö10 Haziran 2015 в 10:22
2015-06-16T10:22:43+00:00
Daha
Kaynak
Düzenle
#27854996

*Blob url nedir? Neden kullanılır?

BLOB sadece bayt dizisidir. Tarayıcı bunu bayt akışı olarak tanır. Kaynaktan byte akışı almak için kullanılır.

Blob nesnesi, değişmez, ham verilerden oluşan dosya benzeri bir nesneyi temsil eder. Bloblar, JavaScript'e özgü bir formatta olması gerekmeyen verileri temsil eder. File arayüzü, Blob işlevselliğini miras alarak ve kullanıcının sistemindeki dosyaları destekleyecek şekilde genişleterek Blob'u temel alır.

*Bir sunucuda kendi blob url'mi oluşturabilir miyim?

Evet, bunu yapmanın çeşitli yolları vardır, örneğin http://php.net/manual/en/function.ibase-blob-echo.php adresini deneyebilirsiniz.

Daha fazlasını okuyun

  • https://developer.mozilla.org/pl/docs/Web/API/Blob
  • http://www.w3.org/TR/FileAPI/#dfn-Blob
  • https://url.spec.whatwg.org/#urls
 Robert
Robert
Edited answer 2015ööp28öö10 Haziran 2015 в 10:28
4
0
 loretoparisi
loretoparisi
2018ösp18ös21 Nisan 2018 в 9:18
2018-04-23T21:18:07+00:00
Daha
Kaynak
Düzenle
#27854998

Bu Javascript işlevi, istemci tarayıcısında bir JSON dosyası indirmek için Blob Dosya API'si ile Data API'si arasındaki farkı göstermeyi amaçlamaktadır:

/**
 * Save a text as file using HTML <a> temporary element and Blob
 * @author Loreto Parisi
 */

var saveAsFile = function(fileName, fileContents) {
    if (typeof(Blob) != 'undefined') { // Alternative 1: using Blob
        var textFileAsBlob = new Blob([fileContents], {type: 'text/plain'});
        var downloadLink = document.createElement("a");
        downloadLink.download = fileName;
        if (window.webkitURL != null) {
            downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
        } else {
            downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
            downloadLink.onclick = document.body.removeChild(event.target);
            downloadLink.style.display = "none";
            document.body.appendChild(downloadLink);
        }
        downloadLink.click();
    } else { // Alternative 2: using Data
        var pp = document.createElement('a');
        pp.setAttribute('href', 'data:text/plain;charset=utf-8,' +
            encodeURIComponent(fileContents));
        pp.setAttribute('download', fileName);
        pp.onclick = document.body.removeChild(event.target);
        pp.click();
    }
} // saveAsFile

/* Example */
var jsonObject = {"name": "John", "age": 30, "car": null};
saveAsFile('out.json', JSON.stringify(jsonObject, null, 2));

Fonksiyon saveAsFile('out.json', jsonString); şeklinde çağrılır. Tarayıcı tarafından hemen tanınan bir ByteStream oluşturacak ve oluşturulan dosyayı doğrudan File API URL.createObjectURL kullanarak indirecektir.

elsede,href` öğesi artı Data API aracılığıyla elde edilen aynı sonucu görmek mümkündür, ancak bunun Blob API'nin sahip olmadığı bazı sınırlamaları vardır.

 7vujy0f0hy
7vujy0f0hy
Edited answer 2019ööp7öö7 Şubat 2019 в 7:07
4
0
Soru ekleyin
Kategoriler
Herşey
Teknoloji
Kültür / Rekreasyon
Yaşam / Sanat
Bilim
Profesyonel
İş Dünyası
Kullanıcılar
All
New
Popular
1
Mansur Zakirov
Registered 1 gün önce
2
Тагир Мамедов
Registered 3 gün önce
3
Алексей Толманов
Registered 3 gün önce
4
Valeriu Vodnicear
Registered 1 hafta önce
5
Alex Johnson
Registered 2 hafta önce
DE
ES
FR
ID
JA
KO
NL
PT
RO
RU
TR
ZH
© kzen.dev 2023
Kaynak
stackoverflow.com
Lisans altında cc by-sa 3.0 atıf ile