Estou tendo muitos problemas com o URL de blob.
Eu estava procurando por src
uma tag de vídeo no YouTube e achei que o vídeo src
era como:
src="blob:https://crap.crap"
Abri o URL do blob que estava no src
vídeo e deu um erro. Não consigo abrir o link, mas ele estava funcionando com a src
tag. Como isso é possível?
Requisitos:
- O que é URL de blob?
- Por que é usado?
- Posso criar meu próprio URL de blob em um servidor?
- Se você tiver detalhes adicionais
html5-video
bloburls
Waqas Tahir
fonte
fonte
Respostas:
URLs de blob (ref W3C , nome oficial) ou URLs de objeto (ref. MDN e nome do método) são usados com um objeto Blob ou File .
URLs de blob só podem ser gerados internamente pelo navegador.
URL.createObjectURL()
criará uma referência especial ao objeto Blob ou File, que poderá ser liberado posteriormente usandoURL.revokeObjectURL()
. Esses URLs podem ser usados apenas localmente na instância única do navegador e na mesma sessão (ou seja, a vida da página / documento).URL de blob / URL de objeto é um pseudo-protocolo para permitir que os objetos Blob e File sejam usados como fonte de URL para coisas como imagens, links de download para dados binários e assim por diante.
Por exemplo, você não pode entregar dados de bytes brutos de um objeto Image, pois ele não saberia o que fazer com ele. Requer, por exemplo, imagens (que são dados binários) para serem carregadas via URLs. Isso se aplica a qualquer coisa que exija um URL como fonte. Em vez de fazer o upload dos dados binários, em seguida, servi-os novamente por meio de uma URL, é melhor usar uma etapa local extra para poder acessar os dados diretamente sem precisar acessar um servidor.
Também é uma alternativa melhor ao Data-URI, que são cadeias codificadas como Base-64 . O problema com o Data-URI é que cada caracter ocupa dois bytes em JavaScript. Além disso, 33% são adicionados devido à codificação Base-64. Os blobs são arrays de bytes binários puros que não possuem sobrecarga significativa como o Data-URI, o que os torna mais rápidos e menores de manipular.
Não, URLs de blob / URLs de objetos podem ser criados apenas internamente no navegador. Você pode criar Blobs e obter o objeto File através da API do File Reader, embora BLOB signifique OBject grande binário e seja armazenado como matriz de bytes. Um cliente pode solicitar que os dados sejam enviados como ArrayBuffer ou Blob. O servidor deve enviar os dados como dados binários puros. Os bancos de dados geralmente usam o Blob para descrever objetos binários e, em essência, estamos falando basicamente de matrizes de bytes.
Você precisa encapsular os dados binários como um objeto BLOB e, em seguida, usar
URL.createObjectURL()
para gerar uma URL local para ele:Observe que
URL
pode ser prefixado em navegadores da webkit, então use:fonte
Esta função Javascript pretende mostrar a diferença entre a API de arquivos Blob e a API de dados para baixar um arquivo JSON no navegador do cliente:
A função é chamada como
saveAsFile('out.json', jsonString);
. Ele criará um ByteStream imediatamente reconhecido pelo navegador que fará o download do arquivo gerado diretamente usando a API de arquivosURL.createObjectURL
.No
else
, é possível ver o mesmo resultado obtido através dohref
elemento mais a API de dados, mas isso tem várias limitações que a API de Blob não possui.fonte
O que é um URL de blob? Por que é usado?
BLOB é apenas uma sequência de bytes. O navegador reconhece como fluxo de bytes. É usado para obter fluxo de bytes da fonte.
Posso criar meu próprio URL de blob em um servidor?
Sim, é possível que haja maneiras servidoras de fazer isso, por exemplo, tente http://php.net/manual/en/function.ibase-blob-echo.php
Leia mais sobre
fonte
Eu modifiquei a solução de trabalho para lidar com os dois casos ... quando o vídeo é carregado e quando a imagem é carregada .. espero que ajude alguns.
HTML
Javascript
jsFiddle Url
https://jsfiddle.net/PratapDessai/0sp3b159/
fonte