From d55414c49feff9aa05cfa108af7edcda94b27eb0 Mon Sep 17 00:00:00 2001 From: boxgaming <75969133+boxgaming@users.noreply.github.com> Date: Tue, 18 Apr 2023 14:29:14 -0500 Subject: [PATCH] added supporting method for converting data URL to Blob --- vfs.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/vfs.js b/vfs.js index 4fd563a..2cd6b79 100644 --- a/vfs.js +++ b/vfs.js @@ -179,6 +179,30 @@ let VFS = function() { return dataUrl; }; + this.dataURLToBlob = function(dataURL) { + // convert base64 to raw binary data held in a string + // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this + var byteString = atob(dataURL.split(',')[1]); + + // separate out the mime component + var mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0] + + // write the bytes of the string to an ArrayBuffer + var ab = new ArrayBuffer(byteString.length); + + // create a view into the buffer + var ia = new Uint8Array(ab); + + // set the bytes of the buffer to the correct values + for (var i = 0; i < byteString.length; i++) { + ia[i] = byteString.charCodeAt(i); + } + + // write the ArrayBuffer to a blob, and you're done + var blob = new Blob([ab], {type: mimeString}); + return blob; + }; + function getTypeFromName(filename) { var parts = filename.split("."); if (parts.length < 2) { return null; }