En javascript los Blobs representan archivos con datos inmutables. Es decir, permiten almacenar cualquier tipo de datos, al igual que un archivo, y se almacenan en memoria.
El siguiente código permite descargar un archivo desde el navegador generado mediante un Blob.
function downloadBlob(blob, name) {
// Convertir el blob en Blob URL (una URL especial que apunta a un objeto almacenado en la memoria del navegador)
const blobUrl = URL.createObjectURL(blob);
// Crear link de descarga y apuntar al Blob URL
const link = document.createElement("a");
link.href = blobUrl;
link.download = name;
document.body.appendChild(link);
// Ejecutar el evento click del enlace creado anteriormente
// Es necesario hacerlo de esta manera porque en Firefox link.click() no funciona
link.dispatchEvent(
new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
})
);
// Eliminar el link del DOM
document.body.removeChild(link);
}
// Cómo usarlo
let jsonBlob = new Blob(['{"name": "Teodomiro"},{"name": "Agapito"}'])
downloadBlob(jsonBlob, 'usuarios.json');