From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/fr/web/api/blob/blob/index.html | 77 +++++++++++ files/fr/web/api/blob/index.html | 240 ++++++++++++++++++++++++++++++++++ files/fr/web/api/blob/type/index.html | 75 +++++++++++ 3 files changed, 392 insertions(+) create mode 100644 files/fr/web/api/blob/blob/index.html create mode 100644 files/fr/web/api/blob/index.html create mode 100644 files/fr/web/api/blob/type/index.html (limited to 'files/fr/web/api/blob') diff --git a/files/fr/web/api/blob/blob/index.html b/files/fr/web/api/blob/blob/index.html new file mode 100644 index 0000000000..fa229550e2 --- /dev/null +++ b/files/fr/web/api/blob/blob/index.html @@ -0,0 +1,77 @@ +--- +title: Blob() +slug: Web/API/Blob/Blob +tags: + - API + - Blob + - Constructeur + - Experimental + - File API + - Reference +translation_of: Web/API/Blob/Blob +--- +
{{APIRef("File API")}}
+ +

Le constructeur Blob() retourne un nouvel objet {{domxref("Blob")}}. Le contenu d'un blob consiste en une concaténation de valeurs données dans le tableau passé en paramètre.

+ +

Syntaxe

+ +
var aBlob = new Blob( array)
+var aBlob = new Blob( array, options );
+
+ +

Paramètres

+ +
+
array
+
Un tableau ({{jsxref("Array")}}) d'objets de type {{jsxref("ArrayBuffer")}}, {{domxref("ArrayBufferView")}}, {{domxref("Blob")}}, {{domxref("DOMString")}}, ou un mélange de tels objets qui seront insérés dans le {{domxref("Blob")}}. Les chaînes DOMString seront encodées en UTF-8.
+
options {{optional_inline}}
+
Un paramètre optionnel qui est un dictionnaire BlobPropertyBag et qui peut être utilisé pour définir les deux attributs suivants : +
    +
  • type : cet attribut représente le type MIME du contenu du tableau qui sera inséré dans le blob. La valeur par défaut pour cette propriété est la chaîne vide "".
  • +
  • endings : cet attribut spécifie la façon dont les chaînes qui contiennent des sauts de lignes (\n) doivent être retranscrites. Il peut prendre l'une de ces valeurs : +
      +
    • "native" indiquera que les caractères de fin doivent être adaptés pour correspondre à ceux utilisés par le système d'exploitation
    • +
    • "transparent" indiquera que les fin de lignes sont stockées telles quelles dans le blob (aucune modification).
    • +
    + La valeur par défaut pour cet attribut est "transparent". {{non-standard_inline}}
  • +
+
+
+ +

Exemples

+ +
// Un tableau qui contient une seule DOMString
+var aFileParts = ['<a id="a"><b id="b">Coucou :) !</b></a>'];
+
+// Le blob
+var oMyBlob = new Blob(aFileParts, {type : 'text/html'});
+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('File API', '#constructorBlob', 'Blob()')}}{{Spec2('File API')}}Définition initiale.
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("api.Blob.Blob")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/api/blob/index.html b/files/fr/web/api/blob/index.html new file mode 100644 index 0000000000..62a3ba68f5 --- /dev/null +++ b/files/fr/web/api/blob/index.html @@ -0,0 +1,240 @@ +--- +title: Blob +slug: Web/API/Blob +tags: + - API + - Référence(2) + - WebAPI +translation_of: Web/API/Blob +--- +
{{APIRef("File API")}}
+ +

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 {{domxref("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 {{domxref("Blob.Blob", "Blob()")}}. Pour créer un blob qui contient un sous-ensemble d'un autre blob, on pourra employer la méthode {{domxref("Blob.slice()", "slice()")}}. Pour obtenir un Blob à partir d'un fichier du système de l'utilisateur, consulter la documentation {{domxref("File")}}.

+ +

Les API qui acceptent des objets Blob sont également listées sur la documentation de {{domxref("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

+ +
+
{{domxref("Blob.Blob", "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

+ +
+
{{domxref("Blob.isClosed")}} {{readonlyinline}} {{experimental_inline}}
+
Un booléen qui indique si la méthode {{domxref("Blob.close()")}} a été appelée sur le blob. Les blobs qui ont été fermés ne peuvent pas être lus.
+
{{domxref("Blob.size")}} {{readonlyinline}}
+
La taille des données contenues dans l'objet Blob, exprimée en octets.
+
{{domxref("Blob.type")}} {{readonlyinline}}
+
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

+ +
+
{{domxref("Blob.close()")}} {{experimental_inline}}
+
Cette méthode clotûre le blob et libère éventuellement les ressources sous-jacentes.
+
{{domxref("Blob.slice()", "Blob.slice([début[, fin[, contentType]]])")}}
+
Cette méthode renvoie un nouvel objet Blob qui contient les données dans le fragment du Blob source entre début et fin.
+
+ +

Exemples

+ +

Utilisation du constructeur Blob

+ +

Le constructeur {{domxref("Blob.Blob", "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 {{domxref("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 {{domxref("FileReader")}}, on peut lire le contenu du blob si c'est une chaîne ou une URL de données.

+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('File API','#blob','Blob')}}{{Spec2('File API')}}Définition initiale.
+ +

Compatibilité des navigateurs

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Support simple5[1]{{CompatVersionUnknown}}4[2]1011.10[1]5.1[1]
slice()10 {{property_prefix("webkit")}}
+ 21
{{CompatVersionUnknown}}5 {{property_prefix("moz")}}[3]
+ 13
10125.1 {{property_prefix("webkit")}}
Constructeur Blob()20{{CompatVersionUnknown}}{{CompatGeckoDesktop("13.0")}}1012.106
close() et isClosed{{CompatUnknown}}{{CompatNo}}{{CompatNo}}[4]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéAndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Support simple{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("13.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
slice(){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Constructeur Blob(){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
close() et isClosed{{CompatUnknown}}{{CompatNo}}{{CompatNo}}[4]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

[1] La version de slice() qui prend en compte la longueur comme deuxième argument a été implémentée dans WebKit et Opera 11.10. Cependant, cette syntaxe était différente de celle de {{jsxref("Array/slice", "Array.slice()")}} et de {{jsxref("String/slice", "String.slice()")}}, WebKit ra arrêté de supporter cette syntaxe et a ajouté la prise en charge de la nouvelle syntaxe dans Blob.webkitSlice().

+ +

[2] Une version de slice() qui prenait une longueur en deuxième argument était implémentée dans Firefox 4. Cependant, cette syntaxe était différente de celle de {{jsxref("Array/slice", "Array.slice()")}} et de {{jsxref("String/slice", "String.slice()")}}, Gecko a arrêté de supporter cette syntaxe et a ajouté la prise en charge de la nouvelle syntaxe dans mozSlice().

+ +

[3] Avant Gecko 12.0 {{geckoRelease("12.0")}}, un bug impactait slice(); les paramètres start et end étaient mal gérés lorsqu'ils étaient en dehors de l'intervalle des valeurs qui peuvent être représentés sur 64 bits, signés. Cela a désormais été corrigé (prise en charge des valeurs non-signées sur 64 bits).

+ +

[4] Cf. {{bug("1048325")}}

+ +

Notes de compatibilité pour Gecko : accéder à cette fonctionnalité dans du code privilégié

+ +

Pour utiliser cette fonctionnalité dans du chrome, JSM ou Bootstrap, il faudra l'importer de cette façon :

+ +
Cu.importGlobalProperties(['Blob']);
+
+ +

Blob est disponible dans les portées des workers.

+ +

Voir aussi

+ + diff --git a/files/fr/web/api/blob/type/index.html b/files/fr/web/api/blob/type/index.html new file mode 100644 index 0000000000..8823dd1bb9 --- /dev/null +++ b/files/fr/web/api/blob/type/index.html @@ -0,0 +1,75 @@ +--- +title: Blob.type +slug: Web/API/Blob/type +tags: + - API + - DOM + - Fichiers + - Propriété +translation_of: Web/API/Blob/type +--- +
{{APIRef("File API")}}
+ +

La propriété type de l'objet Blob fourni le type MIME (Internet media type) d'un fichier. Celle-ci retourne une chaîne de caractère vide si le type n'a pas pu être déterminé.

+ +

Syntaxe

+ +
var mimetype = instanceOfFile.type
+ +

Valeur

+ +

Une chaîne de caractères (par exemple : "image/png").

+ +

Exemple

+ +
var i, fileInput, files, allowedFileTypes;
+
+// fileInput est un HTMLInputElement: <input type="file" multiple id="myfileinput">
+fileInput = document.getElementById("myfileinput");
+
+// files est un objet FileList (similaire à NodeList)
+files = fileInput.files;
+
+// notre application accepte seulement les images de type *.png, *.jpeg et *.gif
+allowedFileTypes = ["image/png", "image/jpeg", "image/gif"];
+
+for (i = 0; i < files.length; i++) {
+  // Vérifie si file.type est un type autorisé.
+  if (allowedFileTypes.indexOf(files[i].type) > -1) {
+    // le type du fichier (file) correspond à l'un des types autorisés. Faites quelque chose ici.
+  }
+});
+
+ +

Spécifications

+ + + + + + + + + + + + + + +
SpécificationStatutCommentaire
{{SpecName('File API', '#dfn-type', 'type')}}{{Spec2('File API')}}Définition initiale.
+ +

Compatibilité des navigateurs

+ +
+
+ + +

{{Compat("api.Blob.type")}}

+
+ +

Voir aussi

+
+ + -- cgit v1.2.3-54-g00ecf