fix: update downloadbase64

This commit is contained in:
ShareVB 2024-07-14 22:31:38 +02:00
parent f07466f814
commit 58f280cee0
2 changed files with 30 additions and 15 deletions

View file

@ -1,11 +1,13 @@
import { extension as getExtensionFromMimeType, extension as getMimeTypeFromExtension } from 'mime-types'; import { extension as getExtensionFromMimeType, extension as getMimeTypeFromExtension } from 'mime-types';
import type { Ref } from 'vue'; import type { MaybeRef } from 'vue';
import _ from 'lodash'; import _ from 'lodash';
import { get } from '@vueuse/core';
export { export {
getMimeTypeFromBase64, getMimeTypeFromBase64,
getMimeTypeFromExtension, getExtensionFromMimeType, getMimeTypeFromExtension, getExtensionFromMimeType,
useDownloadFileFromBase64, useDownloadFileFromBase64Refs, useDownloadFileFromBase64,
previewImageFromBase64,
}; };
const commonMimeTypesSignatures = { const commonMimeTypesSignatures = {
@ -74,21 +76,34 @@ function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
} }
function useDownloadFileFromBase64( function useDownloadFileFromBase64(
{ source, filename, extension, fileMimeType }: { source, filename, extension }:
{ source: Ref<string>; filename?: string; extension?: string; fileMimeType?: string }) { { source: MaybeRef<string>; filename?: MaybeRef<string>; extension?: MaybeRef<string> }) {
return { return {
download() { download() {
downloadFromBase64({ sourceValue: source.value, filename, extension, fileMimeType }); downloadFromBase64({ sourceValue: get(source), filename: get(filename), extension: get(extension) });
}, },
}; };
} }
function useDownloadFileFromBase64Refs( function previewImageFromBase64(base64String: string): HTMLImageElement {
{ source, filename, extension }: if (base64String === '') {
{ source: Ref<string>; filename?: Ref<string>; extension?: Ref<string> }) { throw new Error('Base64 string is empty');
return { }
download() {
downloadFromBase64({ sourceValue: source.value, filename: filename?.value, extension: extension?.value }); const img = document.createElement('img');
}, img.src = base64String;
};
const container = document.createElement('div');
container.appendChild(img);
const previewContainer = document.getElementById('previewContainer');
if (previewContainer) {
previewContainer.innerHTML = '';
previewContainer.appendChild(container);
}
else {
throw new Error('Preview container element not found');
}
return img;
} }

View file

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { Base64 } from 'js-base64'; import { Base64 } from 'js-base64';
import createQPDFModule from 'qpdf-wasm-esm-embedded'; import createQPDFModule from 'qpdf-wasm-esm-embedded';
import { useDownloadFileFromBase64Refs } from '@/composable/downloadBase64'; import { useDownloadFileFromBase64 } from '@/composable/downloadBase64';
const status = ref<'idle' | 'done' | 'error' | 'processing'>('idle'); const status = ref<'idle' | 'done' | 'error' | 'processing'>('idle');
const file = ref<File | null>(null); const file = ref<File | null>(null);
@ -10,7 +10,7 @@ const base64OutputPDF = ref('');
const fileName = ref(''); const fileName = ref('');
const logs = ref<string[]>([]); const logs = ref<string[]>([]);
const fileExtension = ref('pdf'); const fileExtension = ref('pdf');
const { download } = useDownloadFileFromBase64Refs( const { download } = useDownloadFileFromBase64(
{ {
source: base64OutputPDF, source: base64OutputPDF,
filename: fileName, filename: fileName,