URL-адреси Blob (ref W3C , офіційна назва) або URL-адреси об'єктів (посилання MDN та назва методу) використовуються для об'єкта Blob або File .
src = "blob: https: //crap.crap " Я відкрив URL-адресу блобу, яка була у src відео, вона дала помилку, і я не можу відкрити, але працюю з тегом src, як це можливо?
URL-адреси Blob можна генерувати лише внутрішньо браузером. URL.createObjectURL()
створить спеціальне посилання на об'єкт Blob або File, який згодом можна буде випустити за допомогою URL.revokeObjectURL()
. Ці URL-адреси можуть використовуватися лише локально в одному екземплярі браузера та в одному сеансі (тобто термін служби сторінки / документа).
Що таке URL-адреса blob?
Для чого він використовується?
URL-адреса Blob / URL-об’єкт - це псевдопротокол, що дозволяє об'єктам Blob і File використовуватись як джерело URL-адреси для таких речей, як зображення, посилання для завантаження двійкових даних тощо.
Наприклад, ви не можете передавати необмеженим байтовим даним об'єкта Image, оскільки він би не знав, що з ним робити. Для цього потрібно, наприклад, завантажувати зображення (які є двійковими даними) через URL-адреси. Це стосується всього, що потребує URL-адреси як джерела. Замість того, щоб завантажувати двійкові дані, потім повертати їх за допомогою URL-адреси, краще скористатися додатковим місцевим кроком, щоб мати доступ до даних безпосередньо, не переходячи через сервер.
Це також краща альтернатива Data-URI - це рядки, кодовані як Base-64 . Проблема з Data-URI полягає в тому, що кожен char займає два байти в JavaScript. Крім того, 33% додається завдяки кодуванню Base-64. Краплі - це чисті бінарні масиви байтів, які не мають значних накладних витрат, як це робить Data-URI, що робить їх швидшими та меншими для обробки.
Чи можу я зробити власний URL-адресу блобу на сервері?
Ні, URL-адреси Blob / URL-адреси об'єктів можна вносити лише в браузері. Ви можете зробити Blobs і отримати об'єкт File через API Reader файлів, хоча BLOB просто означає Binary Large OBject і зберігається як байтові масиви. Клієнт може вимагати надсилання даних як 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
може бути префіксом у веб-браузерах, тому використовуйте:
var url = (URL || webkitURL).createObjectURL(...);