Un Blob
(Binary Large Object) representa datos inmutables de tipo raw (crudos) que pueden leerse como texto o binario. Los Blob
s pueden representar datos de diferentes tipos, como texto, imágenes, sonido, o incluso otros Blob
s.
Contenidos
Características Principales
- Inmutabilidad: Una vez que un
Blob
es creado, sus datos no pueden ser modificados. - Eficiencia: Los
Blob
s son eficientes en términos de memoria y rendimiento, especialmente para la manipulación de grandes cantidades de datos binarios. - Lectura de Datos: Los datos de un
Blob
pueden ser leídos como texto (usandoFileReader.readAsText
), binario (usandoFileReader.readAsArrayBuffer
), o incluso convertidos a una URL temporal (usandoURL.createObjectURL
).
Creación de un Blob
Para crear un Blob
, usas el constructor Blob()
. Este constructor acepta dos argumentos: un array de datos y un objeto de opciones.
const myBlob = new Blob([data], {type: 'text/plain'});
En este ejemplo, data
puede ser un ArrayBuffer
, un ArrayBufferView
, un Blob
, un DOMString
, o incluso una combinación de ellos.
Ejemplos Prácticos
Vamos a ver algunos ejemplos ilustrativos para entender mejor cómo usar los Blobs.
1. Crear un Blob con Texto
const text = 'Hola, mundo!';
const textBlob = new Blob([text], { type: 'text/plain' });
2. Descargar un Blob como Archivo
Supongamos que quieres permitir a los usuarios descargar un archivo de texto generado en el navegador:
function downloadBlob(blob, filename) {
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
URL.revokeObjectURL(url);
}
const dataBlob = new Blob(['Contenido del archivo'], { type: 'text/plain' });
downloadBlob(dataBlob, 'miArchivo.txt');
3. Leer el Contenido de un Blob
Si tienes un Blob
y quieres leer su contenido como texto:
const reader = new FileReader();
reader.onload = function(event) {
console.log(event.target.result);
};
reader.readAsText(textBlob);
4. Crear un Blob a partir de una Imagen
Supongamos que quieres crear un Blob
a partir de datos de imagen:
fetch('path/to/imagen.jpg')
.then(response => response.blob())
.then(blob => {
// Haz algo con el blob de la imagen
// Por ejemplo, mostrar la imagen en la UI
const imgURL = URL.createObjectURL(blob);
document.querySelector('img').src = imgURL;
});
Uso en Aplicaciones Web
Los Blob
s son extremadamente útiles en aplicaciones web para:
- Manejar archivos subidos por usuarios (por ejemplo, imágenes, videos, documentos).
- Generar y permitir la descarga de archivos (por ejemplo, CSV, PDFs generados).
- Trabajar con datos multimedia (por ejemplo, procesamiento de audio y video).
Para terminar
Los Blob
s son poderosos y versátiles, ideales para manejar datos binarios y de texto en aplicaciones web. Su capacidad para manejar grandes volúmenes de datos de manera eficiente los hace indispensables en el manejo de archivos y datos multimedia en el frontend.