it-tools/src/composable/downloadBase64.ts

19 lines
605 B
TypeScript
Raw Normal View History

import { extension as getExtensionFromMime } from 'mime-types';
2022-04-14 18:18:15 +02:00
import type { Ref } from 'vue';
export function useDownloadFileFromBase64({ source, filename }: { source: Ref<string>; filename?: string }) {
2022-04-14 18:18:15 +02:00
return {
download() {
const base64 = source.value;
const mimeType = base64.match(/data:(.*?);base64/i)?.[1] ?? 'text/plain';
console.log({ mimeType });
const cleanFileName = filename ?? `file.${getExtensionFromMime(mimeType)}`;
2022-04-14 18:18:15 +02:00
const a = document.createElement('a');
a.href = source.value;
a.download = cleanFileName;
2022-04-14 18:18:15 +02:00
a.click();
},
};
}