From 881c1ee1e41805d5728648b1a72e50480199216b Mon Sep 17 00:00:00 2001 From: kils Date: Wed, 31 Jul 2024 02:21:16 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE-?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE=20logo=20=E5=8F=8A=20favic?= =?UTF-8?q?on=20=E6=94=B9=E4=B8=BA=20base64=20=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/index.ts | 18 ++++++++++ .../system/config/components/BasicSetting.vue | 34 ++++++++++--------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index fc19e9a..a7e366d 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -261,3 +261,21 @@ export const copyText = (text: any) => { document.body.removeChild(textarea) Message.success('复制成功') } + +/** @desc 文件的转换base64 */ +export const fileToBase64 = (file: File): Promise => { + return new Promise((resolve, reject) => { + const reader = new FileReader() + reader.onload = () => { + if (reader.result) { + resolve(reader.result.toString()) + } else { + reject(new Error('文件转base64失败')) + } + } + reader.onerror = (error) => { + reject(error) + } + reader.readAsDataURL(file) + }) +} diff --git a/src/views/system/config/components/BasicSetting.vue b/src/views/system/config/components/BasicSetting.vue index fe41572..77c060d 100644 --- a/src/views/system/config/components/BasicSetting.vue +++ b/src/views/system/config/components/BasicSetting.vue @@ -106,11 +106,11 @@ import { type SiteConfig, listOption, resetOptionValue, - updateOption, - uploadFile + updateOption } from '@/apis' import { useAppStore } from '@/stores' import { useForm } from '@/hooks' +import { fileToBase64 } from '@/utils' defineOptions({ name: 'BasicSetting' }) @@ -212,15 +212,16 @@ const onResetValue = () => { // 上传 favicon const handleUploadFavicon = (options: RequestOption) => { const controller = new AbortController() - ; (async function requestWrap() { - const { onProgress, onError, onSuccess, fileItem, name = 'file' } = options + ;(async function requestWrap() { + const { onProgress, onError, onSuccess, fileItem } = options onProgress(20) - const formData = new FormData() - formData.append(name as string, fileItem.file as Blob) - uploadFile(formData) + if (!fileItem.file) { + return + } + fileToBase64(fileItem.file).then() .then((res) => { - onSuccess(res) - form.SITE_FAVICON = res.data.url + onSuccess() + form.SITE_FAVICON = res Message.success('上传成功') }) .catch((error) => { @@ -242,15 +243,16 @@ const handleChangeFavicon = (_: any, currentFile: any) => { // 上传 Logo const handleUploadLogo = (options: RequestOption) => { const controller = new AbortController() - ; (async function requestWrap() { - const { onProgress, onError, onSuccess, fileItem, name = 'file' } = options + ;(async function requestWrap() { + const { onProgress, onError, onSuccess, fileItem } = options onProgress(20) - const formData = new FormData() - formData.append(name as string, fileItem.file as Blob) - uploadFile(formData) + if (!fileItem.file) { + return + } + fileToBase64(fileItem.file).then() .then((res) => { - onSuccess(res) - form.SITE_LOGO = res.data.url + onSuccess() + form.SITE_LOGO = res Message.success('上传成功') }) .catch((error) => {