У меня много проблем с BLOB-URL.
Я искал src
тег видео на YouTube и обнаружил, что видео src
выглядит так:
src="blob:https://crap.crap"
Я открыл URL-адрес блоба, который был в src
видео, оно показало ошибку. Я не могу открыть ссылку, но она работала с src
тегом. Как это возможно?
Требования:
- Что такое BLOB-URL?
- Почему это используется?
- Могу ли я создать свой собственный URL-адрес BLOB-объекта на сервере?
- Если у вас есть какие-либо дополнительные детали
html5-video
bloburls
Вакас Тахир
источник
источник
Ответы:
URL-адреса BLOB- объектов (ref W3C , официальное имя) или URL-адреса объектов (ref. MDN и имя метода) используются с объектами Blob или File .
URL-адреса BLOB-объектов могут создаваться только внутри браузера.
URL.createObjectURL()
создаст специальную ссылку на объект Blob или File, который позже может быть освобожден с помощьюURL.revokeObjectURL()
. Эти URL-адреса могут использоваться только локально в одном экземпляре браузера и в одном сеансе (т. Е. В жизни страницы / документа).Blob URL / Object URL - это псевдопротокол, позволяющий использовать объекты Blob и File в качестве источника URL для таких вещей, как изображения, ссылки для загрузки двоичных данных и т. Д.
Например, вы не можете передать необработанные байтовые данные объекта Image, поскольку он не знает, что с ним делать. Это требует, например, изображения (которые являются двоичными данными) для загрузки через URL-адреса. Это относится ко всему, что требует URL в качестве источника. Вместо того, чтобы загружать двоичные данные, а затем отправлять их обратно через URL, лучше использовать дополнительный локальный шаг, чтобы иметь доступ к данным напрямую, без прохождения через сервер.
Это также лучшая альтернатива Data-URI, которые представляют собой строки, закодированные как Base-64 . Проблема с Data-URI состоит в том, что каждый символ занимает два байта в JavaScript. Кроме того, добавляется 33% из-за кодировки Base-64. BLOB-объекты - это чистые двоичные байтовые массивы, которые не имеют значительных издержек, как Data-URI, что делает их более быстрыми и меньшими для обработки.
Нет, URL-адреса BLOB-объектов / URL-адреса объектов могут создаваться только внутри браузера. Вы можете создавать BLOB-объекты и получать объект File с помощью API-интерфейса File Reader, хотя BLOB означает просто Binary Large OBject и хранится в виде байтовых массивов. Клиент может запросить отправку данных как ArrayBuffer или как BLOB-объект. Сервер должен отправлять данные в виде чистых двоичных данных. Базы данных часто используют Blob для описания двоичных объектов, и, по сути, речь идет в основном о байтовых массивах.
Вам необходимо инкапсулировать двоичные данные как объект BLOB, а затем использовать
URL.createObjectURL()
для создания локального URL-адреса для него:Обратите внимание, что
URL
может иметь префикс в браузерах webkit, поэтому используйте:источник
Эта функция Javascript направлена на то, чтобы показать разницу между API-интерфейсом Blob File и Data API для загрузки JSON- файла в клиентском браузере:
Функция называется как
saveAsFile('out.json', jsonString);
. Он создаст ByteStream, немедленно распознаваемый браузером, который загрузит сгенерированный файл напрямую, используя File APIURL.createObjectURL
.В
else
этом можно увидеть тот же результат, полученный черезhref
элемент плюс API данных, но это имеет несколько ограничений, которых нет у API Blob.источник
Что такое BLOB-URL? Почему это используется?
BLOB - это просто последовательность байтов. Браузер распознает его как поток байтов. Используется для получения потока байтов из источника.
Могу ли я сделать свой собственный URL-адрес BLOB-объекта на сервере?
Да, вы можете сделать это несколькими способами, например, попробуйте http://php.net/manual/en/function.ibase-blob-echo.php
Читайте больше на
источник
Я изменил рабочее решение для обработки обоих случаев ... когда видео загружается и когда изображение загружается ... надеюсь, это поможет некоторым.
HTML
Javascript
URL-адрес jsFiddle
https://jsfiddle.net/PratapDessai/0sp3b159/
источник