From ba20316761621f4a3e62e22b6c6298b659d75d3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Sat, 28 May 2022 15:46:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=A2=84=E8=A7=88=E5=9B=BE=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/file.ts | 20 ++++++++++++++++++-- src/views/chart/hooks/useSync.hook.ts | 11 ++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/utils/file.ts b/src/utils/file.ts index 3529dff7..4a10bd38 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -1,4 +1,20 @@ -import { Buffer } from "buffer" +/** + * * base64转file + * @param dataurl + * @param fileName + * @returns + */ +export const base64toFile = (dataurl: string, fileName: string) => { + let dataArr = dataurl.split(","), + mime = (dataArr as any[])[0].match(/:(.*?);/)[1], + bstr = atob(dataArr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new File([u8arr], fileName, { type: mime }); +} /** * * file转url @@ -16,7 +32,7 @@ import { Buffer } from "buffer" const dataArr = fileUrl.split(',') const mime = (dataArr as any[])[0].match(/:(.*);/)[1] const originStr = atob(dataArr[1]) - return new File([originStr], `${fileName}.png`, { type: mime }) + return new File([originStr], `${fileName}`, { type: mime }) } /** diff --git a/src/views/chart/hooks/useSync.hook.ts b/src/views/chart/hooks/useSync.hook.ts index 59a35c9c..d73ecf9d 100644 --- a/src/views/chart/hooks/useSync.hook.ts +++ b/src/views/chart/hooks/useSync.hook.ts @@ -1,6 +1,6 @@ import { onUnmounted } from 'vue'; import html2canvas from 'html2canvas' -import { getUUID, httpErrorHandle, fetchRouteParamsLocation, canvastoFile } from '@/utils' +import { getUUID, httpErrorHandle, fetchRouteParamsLocation, base64toFile } from '@/utils' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' import { EditCanvasTypeEnum, ChartEditStoreEnum, ProjectInfoEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d' import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' @@ -117,19 +117,16 @@ export const useSync = () => { // 获取缩略图片 const range = document.querySelector('.go-edit-range') as HTMLElement const canvasImage: HTMLCanvasElement = await html2canvas(range) - const canvasFile = canvastoFile(canvasImage, `${fetchRouteParamsLocation()}_index_preview`) // 上传预览图 let uploadParams = new FormData() - uploadParams.append('object', canvasFile) + uploadParams.append('object', base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`)) const uploadRes:any = await uploadFile(uploadParams) - console.log(uploadRes) - // 保存预览图 - if(uploadRes?.data === ResultEnum.SUCCESS) { + if(uploadRes.code === ResultEnum.SUCCESS) { await updateProjectApi({ id: fetchRouteParamsLocation(), - updateProjectApi: uploadRes.url + indexImage: uploadRes.data.objectContent.httpRequest.uri }) }