Skip to content

Commit 45b107a

Browse files
committed
fix: update downloadbase64
1 parent 6e2f09e commit 45b107a

File tree

2 files changed

+19
-58
lines changed

2 files changed

+19
-58
lines changed

pnpm-lock.yaml

Lines changed: 9 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/composable/downloadBase64.ts

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { extension as getExtensionFromMimeType, extension as getMimeTypeFromExtension } from 'mime-types';
2-
import type { MaybeRef } from 'vue';
2+
import type { MaybeRef, Ref } from 'vue';
33
import _ from 'lodash';
44
import { get } from '@vueuse/core';
55

66
export {
77
getMimeTypeFromBase64,
88
getMimeTypeFromExtension, getExtensionFromMimeType,
9-
useDownloadFileFromBase64,
9+
useDownloadFileFromBase64, useDownloadFileFromBase64Refs,
1010
previewImageFromBase64,
1111
};
1212

@@ -43,30 +43,17 @@ function getFileExtensionFromMimeType({
4343
}) {
4444
if (mimeType) {
4545
return getExtensionFromMimeType(mimeType) ?? defaultExtension;
46-
return getExtensionFromMimeType(mimeType) ?? defaultExtension;
4746
}
4847

4948
return defaultExtension;
5049
}
5150

52-
function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
53-
{ sourceValue: string; filename?: string; extension?: string; fileMimeType?: string }) {
54-
if (sourceValue === '') {
55-
throw new Error('Base64 string is empty');
56-
}
5751
function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
5852
{ sourceValue: string; filename?: string; extension?: string; fileMimeType?: string }) {
5953
if (sourceValue === '') {
6054
throw new Error('Base64 string is empty');
6155
}
6256

63-
const defaultExtension = extension ?? 'txt';
64-
const { mimeType } = getMimeTypeFromBase64({ base64String: sourceValue });
65-
let base64String = sourceValue;
66-
if (!mimeType) {
67-
const targetMimeType = fileMimeType ?? getMimeTypeFromExtension(defaultExtension);
68-
base64String = `data:${targetMimeType};base64,${sourceValue}`;
69-
}
7057
const defaultExtension = extension ?? 'txt';
7158
const { mimeType } = getMimeTypeFromBase64({ base64String: sourceValue });
7259
let base64String = sourceValue;
@@ -75,12 +62,6 @@ function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
7562
base64String = `data:${targetMimeType};base64,${sourceValue}`;
7663
}
7764

78-
const cleanExtension = extension ?? getFileExtensionFromMimeType(
79-
{ mimeType, defaultExtension });
80-
let cleanFileName = filename ?? `file.${cleanExtension}`;
81-
if (extension && !cleanFileName.endsWith(`.${extension}`)) {
82-
cleanFileName = `${cleanFileName}.${cleanExtension}`;
83-
}
8465
const cleanExtension = extension ?? getFileExtensionFromMimeType(
8566
{ mimeType, defaultExtension });
8667
let cleanFileName = filename ?? `file.${cleanExtension}`;
@@ -127,25 +108,12 @@ function previewImageFromBase64(base64String: string): HTMLImageElement {
127108
return img;
128109
}
129110

130-
function previewImageFromBase64(base64String: string): HTMLImageElement {
131-
if (base64String === '') {
132-
throw new Error('Base64 string is empty');
133-
}
134-
135-
const img = document.createElement('img');
136-
img.src = base64String;
137-
138-
const container = document.createElement('div');
139-
container.appendChild(img);
140-
141-
const previewContainer = document.getElementById('previewContainer');
142-
if (previewContainer) {
143-
previewContainer.innerHTML = '';
144-
previewContainer.appendChild(container);
145-
}
146-
else {
147-
throw new Error('Preview container element not found');
148-
}
149-
150-
return img;
111+
function useDownloadFileFromBase64Refs(
112+
{ source, filename, extension }:
113+
{ source: Ref<string>; filename?: Ref<string>; extension?: Ref<string> }) {
114+
return {
115+
download() {
116+
downloadFromBase64({ sourceValue: source.value, filename: filename?.value, extension: extension?.value });
117+
},
118+
};
151119
}

0 commit comments

Comments
 (0)