J'ai beaucoup de problèmes avec l'URL blob.
Je cherchais src
un tag vidéo sur YouTube et j'ai trouvé que la vidéo src
était comme:
src="blob:https://crap.crap"
J'ai ouvert l'URL de blob qui se trouvait dans src
la vidéo qui a donné une erreur. Je ne peux pas ouvrir le lien, mais cela fonctionnait avec la src
balise. Comment est-ce possible?
Exigences:
- Qu'est-ce que l'URL blob?
- Pourquoi est-il utilisé?
- Puis-je créer ma propre URL blob sur un serveur?
- Si vous avez des détails supplémentaires
html5-video
bloburls
Waqas Tahir
la source
la source
Réponses:
Les URL Blob (réf W3C , nom officiel) ou URL d'objet (réf. MDN et nom de méthode) sont utilisées avec un objet Blob ou File .
Les URL d'objets blob ne peuvent être générées qu'en interne par le navigateur.
URL.createObjectURL()
créera une référence spéciale à l'objet Blob ou Fichier qui pourra être publié ultérieurement à l'aide deURL.revokeObjectURL()
. Ces URL ne peuvent être utilisées que localement dans la seule instance du navigateur et dans la même session (c'est-à-dire la durée de vie de la page / du document).URL Blob / URL URL est un pseudo protocole permettant aux objets Blob et Fichier d'être utilisés comme source d'URL pour des choses comme les images, les liens de téléchargement pour les données binaires, etc.
Par exemple, vous ne pouvez pas remettre des données d'octets brutes d'un objet Image car il ne saurait pas quoi en faire. Il nécessite par exemple des images (qui sont des données binaires) à charger via des URL. Cela s'applique à tout ce qui nécessite une URL comme source. Au lieu de télécharger les données binaires, puis de les renvoyer via une URL, il est préférable d'utiliser une étape locale supplémentaire pour pouvoir accéder directement aux données sans passer par un serveur.
C'est également une meilleure alternative à Data-URI qui sont des chaînes encodées en Base-64 . Le problème avec Data-URI est que chaque caractère prend deux octets en JavaScript. En plus de cela, un 33% est ajouté en raison de l'encodage Base-64. Les objets blob sont des tableaux d'octets binaires purs qui n'ont pas de surcharge significative comme Data-URI, ce qui les rend plus rapides et plus petits à gérer.
Non, les URL Blob / URL d'objet ne peuvent être créées qu'en interne dans le navigateur. Vous pouvez créer des objets blob et obtenir un objet fichier via l'API File Reader, bien que BLOB signifie simplement un grand objet binaire et soit stocké sous forme de tableaux d'octets. Un client peut demander que les données soient envoyées en tant qu'ArrayBuffer ou en tant qu'objet blob. Le serveur doit envoyer les données sous forme de données binaires pures. Les bases de données utilisent souvent Blob pour décrire également les objets binaires, et nous parlons essentiellement de tableaux d'octets.
Vous devez encapsuler les données binaires en tant qu'objet BLOB, puis utiliser
URL.createObjectURL()
pour générer une URL locale pour celui-ci:Notez que cela
URL
peut être préfixé dans les navigateurs webkit, alors utilisez:la source
Cette fonction Javascript prétend montrer la différence entre l' API de fichier Blob et l' API de données pour télécharger un fichier JSON dans le navigateur client:
La fonction est appelée comme
saveAsFile('out.json', jsonString);
. Il créera un ByteStream immédiatement reconnu par le navigateur qui téléchargera le fichier généré directement à l'aide de l'API FileURL.createObjectURL
.Dans le
else
, il est possible de voir le même résultat obtenu via l'href
élément plus l'API Data, mais cela a plusieurs limitations que l'API Blob n'a pas.la source
Qu'est-ce que l'URL blob? Pourquoi est-il utilisé?
BLOB n'est qu'une séquence d'octets. Le navigateur le reconnaît comme un flux d'octets. Il est utilisé pour obtenir un flux d'octets à partir de la source.
Puis-je créer ma propre URL blob sur un serveur?
Oui, vous pouvez le faire de plusieurs façons, par exemple essayez http://php.net/manual/en/function.ibase-blob-echo.php
En savoir plus sur
la source
J'ai modifié la solution de travail pour gérer à la fois le cas .. lorsque la vidéo est téléchargée et lorsque l'image est téléchargée .. j'espère que cela aidera certains.
HTML
Javascript
URL jsFiddle
https://jsfiddle.net/PratapDessai/0sp3b159/
la source