Saya memiliki banyak masalah dengan URL gumpalan.
Saya sedang mencari src
tag video di YouTube dan saya menemukan bahwa videonya src
seperti:
src="blob:https://crap.crap"
Saya membuka URL gumpalan yang ada di src
video itu memberikan kesalahan. Saya tidak dapat membuka tautan, tetapi itu bekerja dengan src
tag. Bagaimana ini mungkin?
Persyaratan:
- Apa itu URL gumpalan?
- Kenapa digunakan?
- Bisakah saya membuat URL gumpalan saya sendiri di server?
- Jika Anda memiliki detail tambahan
html5-video
bloburls
Waqas Tahir
sumber
sumber
Jawaban:
Blob URL (ref W3C , nama resmi) atau Object-URLs (ref. MDN dan nama metode) digunakan dengan objek Blob atau File .
Blob URL hanya dapat dibuat secara internal oleh browser.
URL.createObjectURL()
akan membuat referensi khusus ke objek Blob atau File yang nantinya dapat dirilis menggunakanURL.revokeObjectURL()
. URL ini hanya dapat digunakan secara lokal dalam satu instance browser dan dalam sesi yang sama (mis. Masa pakai halaman / dokumen).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.
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.
Anda perlu merangkum data biner sebagai objek BLOB, kemudian gunakan
URL.createObjectURL()
untuk menghasilkan URL lokal untuk itu:Catatan yang
URL
mungkin diawali di browser webkit, jadi gunakan:sumber
Fungsi Javascript ini bertujuan untuk menunjukkan perbedaan antara Blob File API dan Data API untuk mengunduh file JSON di browser klien:
Fungsi ini disebut seperti
saveAsFile('out.json', jsonString);
. Ini akan membuat ByteStream segera dikenali oleh browser yang akan mengunduh file yang dihasilkan secara langsung menggunakan File APIURL.createObjectURL
.Dalam
else
, dimungkinkan untuk melihat hasil yang sama yang diperoleh melaluihref
elemen plus API Data, tetapi ini memiliki beberapa keterbatasan yang tidak dimiliki API Blob.sumber
Apa itu url gumpalan? Kenapa digunakan?
BLOB hanyalah urutan byte. Browser mengenalinya sebagai aliran byte. Ini digunakan untuk mendapatkan aliran byte dari sumber.
Bisakah saya membuat url gumpalan saya sendiri di server?
Ya Anda bisa ada cara serveral untuk melakukannya misalnya coba http://php.net/manual/en/function.ibase-blob-echo.php
Baca lebih lanjut
sumber
Saya telah memodifikasi solusi kerja untuk menangani kedua kasus ini .. saat video diunggah dan ketika gambar diunggah .. semoga akan membantu.
HTML
Javascript
jsFiddle Url
https://jsfiddle.net/PratapDessai/0sp3b159/
sumber