diff --git a/apps/web-ele/src/components/upload/file-upload.vue b/apps/web-ele/src/components/upload/file-upload.vue index 39b6d529..43bee52d 100644 --- a/apps/web-ele/src/components/upload/file-upload.vue +++ b/apps/web-ele/src/components/upload/file-upload.vue @@ -1,261 +1,282 @@ - + diff --git a/apps/web-ele/src/components/upload/use-upload.ts b/apps/web-ele/src/components/upload/use-upload.ts index 52f723be..2f46f9e9 100644 --- a/apps/web-ele/src/components/upload/use-upload.ts +++ b/apps/web-ele/src/components/upload/use-upload.ts @@ -79,17 +79,17 @@ export function useUploadType({ } // TODO @芋艿:目前保持和 admin-vue3 一致,后续可能重构 -export const useUpload = (directory?: string) => { +export function useUpload(directory?: string) { // 后端上传地址 const uploadUrl = getUploadUrl(); // 是否使用前端直连上传 const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE; // 重写ElUpload上传方法 - const httpRequest = async ( + async function httpRequest( file: File, onUploadProgress?: AxiosProgressEvent, - ) => { + ) { // 模式一:前端上传 if (isClientUpload) { // 1.1 生成文件名称 @@ -113,20 +113,20 @@ export const useUpload = (directory?: string) => { // 模式二:后端上传 return uploadFile({ file, directory }, onUploadProgress); } - }; + } return { uploadUrl, httpRequest, }; -}; +} /** * 获得上传 URL */ -export const getUploadUrl = (): string => { +export function getUploadUrl(): string { return `${apiURL}/infra/file/upload`; -}; +} /** * 创建文件信息 @@ -134,7 +134,10 @@ export const getUploadUrl = (): string => { * @param vo 文件预签名信息 * @param file 文件 */ -function createFile0(vo: InfraFileApi.FilePresignedUrlRespVO, file: File) { +function createFile0( + vo: InfraFileApi.FilePresignedUrlRespVO, + file: File, +): InfraFileApi.File { const fileVO = { configId: vo.configId, url: vo.url, @@ -148,10 +151,18 @@ function createFile0(vo: InfraFileApi.FilePresignedUrlRespVO, file: File) { } /** - * 生成文件名称 + * 生成文件名称(使用算法SHA256) * * @param file 要上传的文件 */ async function generateFileName(file: File) { + // // 读取文件内容 + // const data = await file.arrayBuffer(); + // const wordArray = CryptoJS.lib.WordArray.create(data); + // // 计算SHA256 + // const sha256 = CryptoJS.SHA256(wordArray).toString(); + // // 拼接后缀 + // const ext = file.name.slice(Math.max(0, file.name.lastIndexOf('.'))); + // return `${sha256}${ext}`; return file.name; } diff --git a/apps/web-ele/src/views/infra/file/data.ts b/apps/web-ele/src/views/infra/file/data.ts index 56d58313..3e97d47f 100644 --- a/apps/web-ele/src/views/infra/file/data.ts +++ b/apps/web-ele/src/views/infra/file/data.ts @@ -9,7 +9,7 @@ export function useFormSchema(): VbenFormSchema[] { { fieldName: 'file', label: '文件上传', - component: 'Upload', + component: 'FileUpload', componentProps: { placeholder: '请选择要上传的文件', }, diff --git a/apps/web-ele/src/views/infra/file/modules/form.vue b/apps/web-ele/src/views/infra/file/modules/form.vue index 558c8ae4..1135c4ad 100644 --- a/apps/web-ele/src/views/infra/file/modules/form.vue +++ b/apps/web-ele/src/views/infra/file/modules/form.vue @@ -1,19 +1,19 @@