Skip to content

Instantly share code, notes, and snippets.

@M1TKO
Created May 12, 2021 12:38
Show Gist options
  • Save M1TKO/7935c11317220fa621c2835f69ad0194 to your computer and use it in GitHub Desktop.
Save M1TKO/7935c11317220fa621c2835f69ad0194 to your computer and use it in GitHub Desktop.
Base64 (data url) to File functions
function dataUrlToFileSync(dataUrl, fileName) {
var mimeType = dataUrl.substring(
dataUrl.indexOf(":") + 1,
dataUrl.indexOf(";")
);
var arr = dataUrl.split(",");
var b64str = atob(arr[1]);
var n = b64str.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = b64str.charCodeAt(n);
}
var newFile = new File([u8arr], fileName + "." + mimeType.substring(6), {
type: mimeType,
});
return newFile;
}
function dataUrlToFileAsync(dataUrl, fileName) {
var mimeType = dataUrl.substring(
dataUrl.indexOf(":") + 1,
dataUrl.indexOf(";")
);
return fetch(dataUrl)
.then(function (res) {
return res.arrayBuffer();
})
.then(function (buf) {
return new File([buf], fileName, { type: mimeType });
});
}
// Testing
var testData =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAADElEQVQImWNgoBMAAABpAAFEI8ARAAAAAElFTkSuQmCC";
console.log(dataUrlToFileSync(testData, "sync-generated-image"));
dataUrlToFileAsync(testData, "async-generated-image").then(function (file) {
console.log(file);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment