Что такое URL-адрес blob и почему он используется?

У меня очень много проблем с URL-адресом blob.

Я искал src видео-тега на YouTube, и я обнаружил, что видео src было похоже:

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

Я открыл URL-адрес blob, который был в src видео, он дал ошибку, и я не могу открыть, но работал с тегом src . Как это возможно?

Требования:

  • Что такое URL-адрес blob?
  • Почему он используется?
  • Могу ли я создать свой собственный URL-адрес blob на сервере?
  • Если у вас есть дополнительные сведения

заранее спасибо

URL-адреса Blob (ref W3C , официальное имя) или Object-URLs (ссылка MDN и имя метода) используются с объектом Blob или File .

src = "blob: https: //crap.crap " Я открыл url blob, который был в src видео, он дал ошибку, и я не могу открыть, но работал с тегом src, как это возможно?

URL-адреса Blob могут генерироваться только браузером. URL.createObjectURL() создаст специальную ссылку на объект Blob или File, который позже может быть выпущен с помощью URL.revokeObjectURL() . Эти URL-адреса могут использоваться только локально в одном экземпляре браузера и в том же сеансе (т. Е. В жизни страницы / документа).

Что такое URL-адрес blob?
Почему он используется?

URL-адрес Blob URL / Object – псевдопротокол, позволяющий использовать объекты Blob и File в качестве источника URL-адреса для таких вещей, как изображения, ссылки для загрузки для двоичных данных и т. Д.

Например, вы не можете передать исходные байтовые данные объекта Image, поскольку он не знал, что с ним делать. Для загрузки URL-адресов требуется, например, изображения (которые являются двоичными данными). Это относится ко всему, что требует URL-адреса в качестве источника. Вместо того, чтобы загружать двоичные данные, затем отсылайте их обратно через URL-адрес, лучше использовать дополнительный локальный шаг, чтобы иметь возможность напрямую обращаться к данным, не проходя через сервер.

Это также лучшая альтернатива Data-URI, которые являются строками, закодированными как Base-64 . Проблема с Data-URI заключается в том, что каждый символ принимает два байта в JavaScript. Кроме того, из-за кодировки Base-64 добавляется 33%. Blobs – это чистые двоичные байт-массивы, которые не имеют значительных служебных данных, как Data-URI, что делает их более быстрыми и меньшими для обработки.

Могу ли я создать свой собственный код blob на сервере?

Нет, URL-адреса Blob / URL-адреса объектов могут быть сделаны только внутри браузера. Вы можете сделать Blobs и получить объект File через API чтения файлов, хотя 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 может быть префикс в webkit-браузерах, поэтому используйте:

 var url = (URL || webkitURL).createObjectURL(...); 

Что такое URL-адрес blob? Почему он используется?

BLOB – это просто последовательность байтов. Браузер распознает его как поток байтов. Он используется для получения байтового потока из источника.

Объект Blob представляет собой файловый объект неизменных необработанных данных. Blob представляют собой данные, которые не обязательно в формате JavaScript. Интерфейс File основан на Blob, наследует функциональность blob и расширяет ее для поддержки файлов в системе пользователя.

Могу ли я создать свой собственный код blob на сервере?

Да, вы можете использовать серверные способы, например, попробовать http://php.net/manual/en/function.ibase-blob-echo.php

Подробнее о