Blob / File în JavaScript

Fișiere și criptografie Toate browserele moderne, Node.js 18+ (File: Node.js 20+)

Un bloc de date imuabil, cu tip MIME (Blob), sau un fișier cu nume și dată (File).

Sintaxă
const blob = new Blob([parti], { type });
await blob.text()
await blob.arrayBuffer()
await blob.bytes()
blob.slice(inceput, sfarsit, tip)
blob.stream()
new File([parti], nume, { type })

Ce face Blob / File

Un Blob conține date (text, octeți, alte blob-uri) și un tip MIME, ca "image/png". Primești blob-uri de la fetch (raspuns.blob()), din canvas sau le creezi tu, de exemplu pentru un fișier de descărcat. size este mărimea în octeți.

Conținutul se citește asincron: text(), arrayBuffer(), bytes() (un Uint8Array) sau stream() (pentru fișiere mari, pe bucăți). slice creează un blob nou dintr-o parte. File este un Blob cu name și lastModified; așa primești fișierele alese într-un <input type="file">.

Parametri

Parametru Descriere
parti Un tablou de texte, octeți sau alte blob-uri.
optiuni Opțional. type (tipul MIME); la File și lastModified.

Ce returnează

Un obiect Blob sau File.

Exemple

Exemplul 1: Creare și citire

size și slice lucrează cu octeți, nu cu caractere: „ă” ocupă doi octeți, iar tăietura după 4 octeți îl rupe în două.

const blob = new Blob(["Bună, ", "Ana!"], { type: "text/plain" });

console.log(blob.size, blob.type);
console.log(await blob.text());
console.log(await blob.slice(0, 4).text());
console.log(await new Blob([new Uint8Array([72, 105])]).bytes());
console.log((await blob.arrayBuffer()).byteLength);

Rezultat

11 text/plain
Bună, Ana!
Bun�
Uint8Array(2) [ 72, 105 ]
11

Exemplul 2: Un fișier și citirea pe bucăți

const fisier = new File(["linia 1\nlinia 2\n"], "note.txt", { type: "text/plain", lastModified: 0 });

console.log(fisier.name, fisier.size, fisier instanceof Blob, fisier.lastModified);
for await (const bucata of fisier.stream()) {
  console.log("bucată de", bucata.length, "octeți");
}

Rezultat

note.txt 16 true 0
bucată de 16 octeți

Greșeli frecvente

  • Uiți await la blob.text(). Metodele de citire sunt asincrone.
  • Citești cu text() un fișier de câteva sute de MB și pagina se blochează. Folosește stream() sau slice.

Comenzi înrudite

  • URL.createObjectURL / revokeObjectURL: Creează o adresă temporară (blob:…) pentru un fișier sau Blob din memorie, ca să-l afișezi sau descarci.
  • FileReader: Citește conținutul unui fișier ales de utilizator: ca text, ca adresă data: sau ca octeți.
  • Response (json, text, blob): Răspunsul unei cereri fetch: starea, antetele și metodele care citesc conținutul ca JSON, text sau date binare.