portalis-component
Version:
Component Library for Nuxt 3 using TailwindCSS
36 lines (35 loc) • 1.06 kB
JavaScript
export function toBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
const onLoad = () => {
cleanup();
resolve(reader.result);
};
const onError = (error) => {
cleanup();
reject(error);
};
const cleanup = () => {
reader.removeEventListener("load", onLoad);
reader.removeEventListener("error", onError);
};
reader.addEventListener("load", onLoad);
reader.addEventListener("error", onError);
reader.readAsDataURL(file);
});
}
export function fromBase64(dataurl, filename, mimeType) {
if (!dataurl)
return;
try {
const name = filename ?? (/* @__PURE__ */ new Date()).toISOString();
const [meta, body] = dataurl.split(",");
const mime = mimeType ?? meta.match(/:(.*?);/)?.[1];
const buffer = window.atob(body);
const uint8 = Uint8Array.from(buffer, (c) => c.codePointAt(0));
return new globalThis.File([uint8], name, { type: mime });
} catch (error) {
if (import.meta.env.DEV)
console.warn(error);
}
}