Tengo muchos problemas con la URL de blob.
Estaba buscando src
una etiqueta de video en YouTube y descubrí que el video src
era como:
src="blob:https://crap.crap"
Abrí la URL del blob que estaba en src
el video, dio un error. No puedo abrir el enlace, pero funcionaba con la src
etiqueta. ¿Cómo es esto posible?
Requisitos:
- ¿Qué es el blob URL?
- ¿Por qué se usa?
- ¿Puedo hacer mi propia URL de blob en un servidor?
- Si tienes algún detalle adicional
html5-video
bloburls
Waqas Tahir
fuente
fuente
Respuestas:
Las URL de blob (ref W3C , nombre oficial) o las URL de objeto (ref. MDN y nombre del método) se utilizan con un objeto Blob o File .
Las URL de blob solo pueden ser generadas internamente por el navegador.
URL.createObjectURL()
creará una referencia especial al objeto Blob o File que luego se puede liberar usandoURL.revokeObjectURL()
. Estas URL solo se pueden usar localmente en la única instancia del navegador y en la misma sesión (es decir, la vida útil de la página / documento).Blob URL / Object URL es un pseudo protocolo para permitir que los objetos Blob y File se utilicen como fuente de URL para cosas como imágenes, enlaces de descarga para datos binarios, etc.
Por ejemplo, no puede entregar un objeto de imagen datos de bytes en bruto ya que no sabría qué hacer con él. Requiere, por ejemplo, imágenes (que son datos binarios) para cargarse a través de URL. Esto se aplica a todo lo que requiera una URL como fuente. En lugar de cargar los datos binarios, luego devolverlos a través de una URL, es mejor usar un paso local adicional para poder acceder a los datos directamente sin pasar por un servidor.
También es una mejor alternativa a Data-URI, que son cadenas codificadas como Base-64 . El problema con Data-URI es que cada carácter toma dos bytes en JavaScript. Además de eso, se agrega un 33% debido a la codificación Base-64. Los blobs son conjuntos de bytes binarios puros que no tienen una sobrecarga significativa como lo hace Data-URI, lo que los hace más rápidos y pequeños de manejar.
No, las URL de blob / URL de objeto solo se pueden hacer internamente en el navegador. Puede hacer Blobs y obtener un objeto File a través de la API de File Reader, aunque BLOB solo significa Binary Large OBject y se almacena como conjuntos de bytes. Un cliente puede solicitar que los datos se envíen como ArrayBuffer o como Blob. El servidor debe enviar los datos como datos binarios puros. Las bases de datos a menudo usan Blob para describir objetos binarios también, y en esencia estamos hablando básicamente de conjuntos de bytes.
Debe encapsular los datos binarios como un objeto BLOB, luego usar
URL.createObjectURL()
para generar una URL local para él:Tenga en cuenta que
URL
puede tener el prefijo en webkit-browsers, así que use:fuente
Esta función Javascript pretende mostrar la diferencia entre la API de archivos Blob y la API de datos para descargar un archivo JSON en el navegador del cliente:
La función se llama like
saveAsFile('out.json', jsonString);
. Creará un ByteStream inmediatamente reconocido por el navegador que descargará el archivo generado directamente utilizando la API de archivoURL.createObjectURL
.En el
else
, es posible ver el mismo resultado obtenido a través delhref
elemento más la API de datos, pero esto tiene varias limitaciones que la API Blob no tiene.fuente
¿Qué es blob url? ¿Por qué se usa?
BLOB es solo una secuencia de bytes. El navegador lo reconoce como flujo de bytes. Se utiliza para obtener el flujo de bytes desde la fuente.
¿Puedo hacer mi propia URL de blob en un servidor?
Sí, puede, hay varias formas de hacerlo, por ejemplo, intente http://php.net/manual/en/function.ibase-blob-echo.php
Leer más en
fuente
He modificado la solución de trabajo para manejar tanto el caso ... cuando se carga el video como cuando se carga la imagen ... espero que ayude un poco.
HTML
Javascript
jsFiddle Url
https://jsfiddle.net/PratapDessai/0sp3b159/
fuente