Что такое blob https
Что такое префикс «blob: http: //» и где я могу узнать больше об этом?
Я использую Safari, и не уверен, что это работает в других браузерах, но когда я зарегистрировался для учетной записи штормовой путь, я вижу следующий URL
Префикс blob: является новым для меня, и я хочу знать, работает ли он во всех браузерах и какие другие префиксы могут существовать.
URI / URL-адрес BLOB-объекта, созданный JavaScript, относится к данным, которые в данный момент хранятся в памяти вашего браузера (только на текущей странице), и не относится к данным, существующим на хосте.
Большинство схем URI не имеют стандартных положений для содержания целого другого URI, поэтому вы не будете думать о них как о префиксе другого целого URI. Помимо http: и https:, некоторые распространенные схемы URI включают в себя:
. и многое другое. Я уверен, что я опускаю все фавориты. 🙂
Я копирую и вставляю ответ из StackOverflow из-за фоновой информации о блобе в строке URL.
URL, созданный из JavaScript, Blob не может быть преобразован в «обычный» URL.
A blob : URL-адрес не относится к данным, существующим на сервере, он относится к данным, которые ваш браузер в данный момент хранит в памяти, для текущей страницы. Он не будет доступен на других страницах, он не будет доступен в других браузерах и не будет доступен с других компьютеров.
Следовательно, в общем случае нет смысла преобразовывать URL-адрес BLOB-объекта в «обычный» URL-адрес. Если вы хотите получить обычный URL-адрес, вам придется отправить данные из браузера на сервер, и сервер сделает их доступными как обычный файл.
Можно преобразовать blob: URL в data: URL, по крайней мере, в Chrome. Вы можете использовать AJAX-запрос для «извлечения» данных из blob: URL (хотя на самом деле это просто извлечение данных из памяти вашего браузера, а не выполнение HTTP-запроса).
Я не думаю, что ссылка на npmjs, предоставленная Масудом, очень полезна. Он направляет вас в библиотеку Javascript на хосте библиотеки npmjs. Библиотека blob-util используется для работы со стандартным API-интерфейсом в браузере для работы с BLOB-объектами, что упрощает написание кода для этих вещей, но не является хорошим справочным материалом для понимания URL-адресов BLOB-объектов и их сущности.
Что такое URL-адрес BLOB-объекта и почему он используется?
У меня много проблем с BLOB-URL.
Я искал src тег видео на YouTube и обнаружил, что видео src выглядит так:
Я открыл URL-адрес блоба, который был в src видео, оно показало ошибку. Я не могу открыть ссылку, но она работала с src тегом. Как это возможно?
src = «blob: https: //crap.crap » Я открыл URL-адрес блоба, который был в src видео, он выдал ошибку, и я не могу открыть, но работал с тегом src, как это возможно?
Что такое BLOB-URL?
Почему это используется?
Например, вы не можете передать необработанные байтовые данные объекта Image, поскольку он не знает, что с ним делать. Это требует, например, изображения (которые являются двоичными данными) для загрузки через URL-адреса. Это относится ко всему, что требует URL в качестве источника. Вместо того, чтобы загружать двоичные данные, а затем отправлять их обратно через URL, лучше использовать дополнительный локальный шаг, чтобы иметь доступ к данным напрямую, без прохождения через сервер.
Могу ли я сделать свой собственный URL-адрес BLOB-объекта на сервере?
Нет, URL-адреса BLOB-объектов / URL-адреса объектов могут создаваться только внутри браузера. Вы можете создавать BLOB-объекты и получать объект File с помощью API-интерфейса File Reader, хотя BLOB означает просто Binary Large OBject и хранится в виде байтовых массивов. Клиент может запросить отправку данных как ArrayBuffer или как BLOB-объект. Сервер должен отправлять данные в виде чистых двоичных данных. Базы данных часто используют Blob для описания двоичных объектов, и, по сути, речь идет в основном о байтовых массивах.
если у вас есть, то дополнительная информация
Вам необходимо инкапсулировать двоичные данные как объект BLOB, а затем использовать URL.createObjectURL() для создания локального URL-адреса для него:
Обратите внимание, что URL может иметь префикс в браузерах webkit, поэтому используйте:
Что такое blob https
ArrayBuffer и бинарные массивы являются частью ECMA-стандарта и, соответственно, частью JavaScript.
Кроме того, в браузере имеются дополнительные высокоуровневые объекты, описанные в File API.
Благодаря type мы можем загружать и скачивать Blob-объекты, где type естественно становится Content-Type в сетевых запросах.
Конструктор имеет следующий синтаксис:
Мы можем получить срез Blob, используя:
Мы не можем изменять данные напрямую в Blob, но мы можем делать срезы и создавать новый Blob на их основе, объединять несколько объектов в новый и так далее.
Это поведение аналогично JavaScript-строке: мы не можем изменить символы в строке, но мы можем создать новую исправленную строку на базе имеющейся.
Blob как URL
Давайте начнём с простого примера. При клике на ссылку мы загружаем динамически генерируемый Blob с hello world содержимым как файл:
Далее простой пример создания «на лету» и загрузки Blob-объекта, без использования HTML:
Вот как выглядит сгенерированный URL:
В данном случае возможен побочный эффект. Пока в карте соответствия существует ссылка на Blob, он находится в памяти. Браузер не может освободить память, занятую Blob-объектом.
Ссылка в карте соответствия автоматически удаляется при выгрузке документа, после этого также освобождается память. Но если приложение имеет длительный жизненный цикл, это может произойти не скоро. Таким образом, если мы создадим URL для Blob, он будет висеть в памяти, даже если в нём нет больше необходимости.
URL.revokeObjectURL(url) удаляет внутреннюю ссылку на объект, что позволяет удалить его (если нет другой ссылки) сборщику мусора, и память будет освобождена.
Blob to base64
Альтернатива URL.createObjectURL – конвертация Blob-объекта в строку с кодировкой base64.
Эта кодировка представляет двоичные данные в виде строки с безопасными для чтения символами в ASCII-кодах от 0 до 64. И что более важно – мы можем использовать эту кодировку для «data-urls».
Браузер декодирует строку и показывает смайлик:
Вот пример загрузки Blob при помощи base64:
Оба варианта могут быть использованы для создания URL с Blob. Но обычно URL.createObjectURL(blob) является более быстрым и безопасным.
Изображение в Blob
Мы можем создать Blob для изображения, части изображения или даже создать скриншот страницы. Что удобно для последующей загрузки куда-либо.
Операции с изображениями выполняются через элемент :
В примере ниже изображение просто копируется, но мы можем взять его часть или трансформировать его на canvas перед созданием Blob:
Или если вы предпочитаете async/await вместо колбэка:
Из Blob в ArrayBuffer
Но если нам нужна производительная низкоуровневая обработка, мы можем использовать ArrayBuffer из FileReader :
Итого
Это делает Blob удобным для операций загрузки/выгрузки данных, которые так часто используются в браузере.
Методы, которые выполняют сетевые запросы, такие как XMLHttpRequest, fetch и подобные, могут изначально работать с Blob так же, как и с другими объектами, представляющими двоичные данные.
Мы можем легко конвертировать Blob в низкоуровневые бинарные типы данных и обратно:
What is a blob URL and why it is used?
I am having a lot of problems with blob URL.
I was searching for src of a video tag on YouTube and I found that the video src was like:
I opened the blob URL that was in src of the video it gave an error. I can’t open the link, but it was working with the src tag. How is this possible?
5 Answers 5
Blob URLs (ref W3C, official name) or Object-URLs (ref. MDN and method name) are used with a Blob or a File object.
src=»blob:https://crap.crap» I opened the blob url that was in src of video it gave a error and i can’t open but was working with the src tag how it is possible?
Blob URL/Object URL is a pseudo protocol to allow Blob and File objects to be used as URL source for things like images, download links for binary data and so forth.
For example, you can not hand an Image object raw byte-data as it would not know what to do with it. It requires for example images (which are binary data) to be loaded via URLs. This applies to anything that require an URL as source. Instead of uploading the binary data, then serve it back via an URL it is better to use an extra local step to be able to access the data directly without going via a server.
It is also a better alternative to Data-URI which are strings encoded as Base-64. The problem with Data-URI is that each char takes two bytes in JavaScript. On top of that a 33% is added due to the Base-64 encoding. Blobs are pure binary byte-arrays which does not have any significant overhead as Data-URI does, which makes them faster and smaller to handle.
Can i make my own blob url on a server?
No, Blob URLs/Object URLs can only be made internally in the browser. You can make Blobs and get File object via the File Reader API, although BLOB just means Binary Large OBject and is stored as byte-arrays. A client can request the data to be sent as either ArrayBuffer or as a Blob. The server should send the data as pure binary data. Databases often uses Blob to describe binary objects as well, and in essence we are talking basically about byte-arrays.
if you have then Additional detail
You need to encapsulate the binary data as a BLOB object, then use URL.createObjectURL() to generate a local URL for it:
Note that URL may be prefixed in webkit-browsers, so use:
Объект Blob
Узнайте, что такое Blob и как его использовать
Веб-браузеры реализуют Blob объект, который отвечает за хранение данных.
Blob означает «большой двоичный объект» и представляет собой непрозрачное представление блока байтов.
BLOB-объекты используются для многих целей.
Их можно создавать из контента из сети. Их можно сохранить на диск или прочитать с диска. Они являются базовой структурой данных для File используется в FileReader API, например.
На большие двоичные объекты также можно ссылаться с помощью URL-адресов.
Вы можете извлечь текст (или байты), хранящийся в большом двоичном объекте, икапли могут даже храниться непосредственно в IndexedDB, и их тоже можно получить оттуда.
BLOB-объект можно создать:
Конструктор принимает массив значений. Даже если у вас есть только одна строка, которую нужно поместить в большой двоичный объект, вы должны заключить ее в массив.
Вы не обязаны ставитьНитьценить. Вы можете пройти:
Конструктор Blob принимает необязательный второй параметр, который представляет тип MIME:
Когда у вас есть объект Blob, вы можете получить доступ к его двум свойствам:
Когда ты звонишь slice() вы можете получить часть большого двоичного объекта.
Это пример создания нового большого двоичного объекта из байтов с 10 по 20 aBlob :
Загрузка большого двоичного объекта
Этот код используется как обратный вызов для типа ввода или перетаскивания. Мы загружаем blob-объект по URL-адресу, используяXHR, используя f функция для отслеживания прогресса:
Загрузка данных из Интернета в виде большого двоичного объекта
Мы можем загрузить данные из Интернета и сохранить их в объекте Blob, используя следующий синтаксис:
URL-адреса BLOB-объектов
Я упоминал, что на большие двоичные объекты также можно ссылаться с помощью URL-адресов.
URL-адреса BLOB-объектов создаются браузером и являются внутренними ссылками. Учитывая большой двоичный объект, вы можете сгенерировать для него URL-адрес, используя URL.createObjectURL() функция.
URL-адрес Blob начинается с blob:// схема.
Как только браузер увидит этот URL-адрес, он будет обслуживать соответствующий большой двоичный объект, хранящийся в памяти или на диске.
URL-адреса BLOB-объектов отличаются от URL-адресов данных (начиная с data: ), потому что они не хранят данные в URL-адресе. Они также отличаются от URL-адресов файлов (начиная с file: ), поскольку они не раскрывают конфиденциальную информацию, такую как путь к файлу.
Если вы обращаетесь к URL-адресу Blob-объекта, который больше не существует, вы получите ошибку 404 в браузере.
После создания URL-адреса большого двоичного объекта его можно удалить, вызвав URL.revokeObjectURL() и передача URL-адреса.
Пример загрузки файла с локального диска на страницу и получения
В этом примере кода у нас есть input элемент для выбора изображения. После выбора изображения мы удаляем элемент ввода и отображаем изображение. Мы также очищаем blob после завершения отображения изображения:
Чтение из капли
Вы не можете напрямую получить доступ к данным, содержащимся в большом двоичном объекте.