Convert a Blob to a Base64 String With a JavaScript Promise
Published: Jun 23, 2021
Sometimes you need to do this in the browser. Here’s how.
Function #
const convertBlobToBase64Async = (blob, mimeType) => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => {
const dataUrlPrefix = `data:${mimeType};base64,`;
const base64WithDataUrlPrefix = reader.result;
const base64 = base64WithDataUrlPrefix.replace(dataUrlPrefix, '');
resolve(base64);
};
reader.onerror = reject;
reader.readAsDataURL(blob);
});
};
Usage #
const obj = { hello: 'world' };
const mimeType = 'application/json';
const blob = new Blob([JSON.stringify(obj, null, 2)], { type: mimeType });
// With await ...
const base64 = await convertBlobToBase64Async(blob, mimeType);
console.log(base64);
// Outputs: ewogICJoZWxsbyI6ICJ3b3JsZCIKfQ==
// With Promise.prototype.then() ...
convertBlobToBase64Async(blob, mimeType).then((base64) => {
console.log(base64);
// Outputs: ewogICJoZWxsbyI6ICJ3b3JsZCIKfQ==
});