JSFiddle - React, Tailwind, and code Playground
by Jeremy Banks
JavaScript
var contentType = 'image/png';
var b64dData = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
var blob = b64toBlob(b64Data, contentType);
var blobUrl = URL.createObjectURL(blob);
window.location = blobUrl;
function b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 1024;
function charCodeFromCharacter(c) {
return c.charCodeAt(0);
}
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = Array.prototype.map.call(
slice, charCodeFromCharacter);
var byteArray = new Uint8Array(byteNumbers, contentType);
byteArrays.push(byteNumbers);
}
var blob = new Blob(byteArrays, {type: contentType});
return blob;
}