Blob URL (ref W3C , nama resmi) atau Object-URLs (ref. MDN dan nama metode) digunakan dengan objek Blob atau File .
src = "blob: https: //crap.crap " Saya membuka url blob yang ada di src video itu memberikan kesalahan dan saya tidak bisa membuka tetapi bekerja dengan tag src bagaimana mungkin?
Blob URL hanya dapat dibuat secara internal oleh browser. URL.createObjectURL()
akan membuat referensi khusus ke objek Blob atau File yang nantinya dapat dirilis menggunakan URL.revokeObjectURL()
. URL ini hanya dapat digunakan secara lokal dalam satu instance browser dan dalam sesi yang sama (mis. Masa pakai halaman / dokumen).
Apa itu url gumpalan?
Kenapa digunakan?
Blob URL / Object URL adalah protokol semu untuk memungkinkan objek Blob dan File digunakan sebagai sumber URL untuk hal-hal seperti gambar, tautan unduhan untuk data biner dan sebagainya.
Misalnya, Anda tidak dapat menyerahkan objek gambar byte-data mentah karena tidak akan tahu apa yang harus dilakukan dengannya. Misalnya diperlukan gambar (yang merupakan data biner) untuk dimuat melalui URL. Ini berlaku untuk apa pun yang memerlukan URL sebagai sumber. Daripada mengunggah data biner, kemudian menyajikannya kembali melalui URL, lebih baik menggunakan langkah lokal tambahan untuk dapat mengakses data secara langsung tanpa melalui server.
Ini juga merupakan alternatif yang lebih baik untuk Data-URI yang string dikodekan sebagai Base-64 . Masalah dengan Data-URI adalah bahwa setiap karakter mengambil dua byte dalam JavaScript. Selain itu, 33% ditambahkan karena pengkodean Base-64. Blob adalah byte-array binary murni yang tidak memiliki overhead signifikan seperti Data-URI, yang membuatnya lebih cepat dan lebih kecil untuk ditangani.
Bisakah saya membuat url gumpalan saya sendiri di server?
Tidak, Blob URLs / Object URLs hanya dapat dibuat secara internal di browser. Anda dapat membuat Blob dan mendapatkan objek File melalui File Reader API, meskipun BLOB hanya berarti Binary Large OBject dan disimpan sebagai byte-array. Klien dapat meminta data untuk dikirim sebagai ArrayBuffer atau sebagai Blob. Server harus mengirim data sebagai data biner murni. Basis data sering menggunakan Blob untuk menggambarkan objek biner juga, dan pada dasarnya kita berbicara tentang byte-array.
jika Anda memiliki detail tambahan
Anda perlu merangkum data biner sebagai objek BLOB, kemudian gunakan URL.createObjectURL()
untuk menghasilkan URL lokal untuk itu:
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
Catatan yang URL
mungkin diawali di browser webkit, jadi gunakan:
var url = (URL || webkitURL).createObjectURL(...);