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 .
src = "blob: https: //crap.crap " J'ai ouvert l'URL de blob qui était en src de la vidéo, cela a donné une erreur et je ne peux pas l'ouvrir mais travaillais avec la balise src comment c'est possible?
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 de URL.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).
Qu'est-ce que l'URL blob?
Pourquoi est-il utilisé?
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.
Puis-je créer ma propre URL blob sur un serveur?
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.
si vous avez alors des détails supplémentaires
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:
var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}),
url = URL.createObjectURL(blob),
img = new Image();
img.onload = function() {
URL.revokeObjectURL(this.src); // clean-up memory
document.body.appendChild(this); // add image to DOM
}
img.src = url; // can now "stream" the bytes
Notez que cela URL
peut être préfixé dans les navigateurs webkit, alors utilisez:
var url = (URL || webkitURL).createObjectURL(...);