Blob
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Un objet Blob
représente un objet, semblable à un fichier, qui est immuable et qui contient des données brutes. Les blobs (pour Binary Large Objects) représentent des données qui ne sont pas dans un format JavaScript natif. L'interface File
est basée sur l'interface Blob
et hérite des fonctionnalités de cette dernière tout en ajoutant des fonctionnalités pour gérer les fichiers sur le système de l'utilisateur.
Pour construire un Blob
à partir d'objets qui ne sont pas des blobs ou à partir d'autres données, on pourra utiliser le constructeur Blob()
. Pour créer un blob qui contient un sous-ensemble d'un autre blob, on pourra employer la méthode slice()
. Pour obtenir un Blob
à partir d'un fichier du système de l'utilisateur, consulter la documentation File
.
Les API qui acceptent des objets Blob
sont également listées sur la documentation de File
.
Note :
La méthode slice()
utilisait auparavant un deuxième argument qui indiquait le nombre d'octets à copier dans le nouveau blob. Si on utilisait un couple de valeur début + longueur
qui dépassait la taille du blob source, le blob qui était renvoyé contenait les données à partir de l'indice de début et jusuq'à la fin du blob.
Note :
La méthode slice()
doit être utilisée avec certains préfixes sur certaines versions de navigateurs : blob.mozSlice()
pour Firefox 12 et antérieur, blob.webkitSlice()
dans Safari. Un ancienne version de slice()
sans préfixes avait une sémantique différente et est désormais obsolète. La prise en charge de blob.mozSlice()
a été abandonnée avec Firefox 30.
Constructeur
Blob(blobParts[, options])
-
Ce constructeur renvoie un nouvel objet
Blob
qui contient la concaténation des valeurs du tableau passé en paramètre.
Propriétés
Blob.isClosed
Lecture seule Expérimental-
Un booléen qui indique si la méthode
Blob.close()
a été appelée sur le blob. Les blobs qui ont été fermés ne peuvent pas être lus. Blob.size
Lecture seule-
La taille des données contenues dans l'objet
Blob
, exprimée en octets. Blob.type
Lecture seule-
Une chaîne de caractères qui indique le type MIME des données contenues dans le
Blob
. Si le type est inconnu, la chaîne de caractères est vide.
Méthodes
Blob.close()
Expérimental-
Cette méthode clotûre le blob et libère éventuellement les ressources sous-jacentes.
Blob.slice([début[, fin[, contentType]]])
-
Cette méthode renvoie un nouvel objet
Blob
qui contient les données dans le fragment duBlob
source entredébut
etfin
.
Exemples
Utilisation du constructeur Blob
Le constructeur Blob()
permet de créer des blobs à partir d'autres objets. Par exemple, on peut construire un blob à partir d'une chaîne de caractères :
var debug = { coucou: "monde" };
var blob = new Blob([JSON.stringify(debug, null, 2)], {
type: "application/json",
});
Créer une URL de données vers un tableau typé
var typedArray = GetTheTypedArraySomehow();
// On ajoute un type MIME pertinent
var blob = new Blob([typedArray], { type: "application/octet-binary" });
var url = URL.createObjectURL(blob);
// url ressemblera à :
// blob:d3958f5c-0777-0845-9dcf-2cb28783acaf
// désormais on peut utiliser l'URL dans tout
// contexte qui utilise des URL (img.src par
// exemple)
Extraire des données à partir d'un blob
La seule façon de lire le contenu d'un blob est d'utiliser un objet FileReader
. Dans le code qui suit, on lit le contenu d'un blob sous la forme d'un tableau typé.
var reader = new FileReader();
reader.addEventListener("loadend", function () {
// reader.result contient le contenu du
// blob sous la forme d'un tableau typé
});
reader.readAsArrayBuffer(blob);
En utilisant d'autres méthodes de FileReader
, on peut lire le contenu du blob si c'est une chaîne ou une URL de données.
Spécifications
Specification |
---|
File API # blob-section |
Compatibilité des navigateurs
BCD tables only load in the browser