11 juillet 2023

Blob

ArrayBuffer et les vues font partie de la norme ECMA, une partie de JavaScript.

Dans le navigateur, il existe d’autres objets de niveau supérieur, décrits dans File API, en particulier Blob.

Blob consiste en une chaîne de caractères optionnelle type (un type de MIME habituellement), plus blobParts – une séquence d’autres objets Blob , chaînes de caractères et BufferSource.

La syntaxe du constructeur est la suivante:

new Blob(blobParts, options);
  • blobParts est un tableau de Blob/BufferSource/String.
  • options objet optionnel:
    • type – le type du Blob, généralement de type MIME, par exemple. image/png,
    • endings – s’il faut transformer la fin de ligne pour rendre le Blob correspondent aux nouvelles lignes de l’OS actuel (\r\n ou \n). "transparent" Par défaut (ne fait rien), mais peut aussi être "native" (transformer).

Par exemple:

// créer un Blob à partir d'une chaîne
let blob = new Blob(["<html>…</html>"], {type: 'text/html'});
// veuillez noter: le premier argument doit être un tableau [...]
// créer un objet blob à partir d'un tableau typés et de chaînes de caractères
let hello = new Uint8Array([72, 101, 108, 108, 111]); // "Hello" sous forme binaire

let blob = new Blob([hello, ' ', 'world'], {type: 'text/plain'});

Nous pouvons extraire des parties du Blob avec :

blob.slice([byteStart], [byteEnd], [contentType]);
  • byteStart – l’octet de départ, par défaut 0.
  • byteEnd – le dernier octet (exclusif, par défaut jusqu’à la fin).
  • contentType – Le type du nouvel objet blob, par défaut le même que la source.

Les arguments sont similaires à array.slice, les nombres négatifs sont également autorisés.

Les objets Blob sont immuables

Nous ne pouvons pas modifier les données directement dans un Blob, mais nous pouvons découper des parties d’un Blob, créer de nouveaux objets Blob à partir d’eux, les mélanger dans un nouveau Blob et ainsi de suite.

Ce comportement est similaire aux chaînes de caractères JavaScript: nous ne pouvons pas changer un caractère dans une chaîne, mais nous pouvons créer une nouvelle chaîne corrigée.

Blob comme URL

Un Blob peut être facilement utilisé comme URL pour <a>, <img> ou d’autres balises, pour afficher son contenu.