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

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

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

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

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

Требования:

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

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

Ответ 1

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 заключается в том, что каждый char занимает два байта в JavaScript. Кроме того, из-за кодировки Base-64 добавляется 33%. Blob - это чистые двоичные байт-массивы, которые не имеют существенных служебных данных, как Data-URI, что делает их более быстрыми и меньшими для обработки.

Можно ли создать собственный URL-адрес 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(...);

Ответ 2

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

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

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

Можно ли создать собственный URL-адрес blob на сервере?

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

Подробнее о