+
-
-
-
- {{ $t('ui.upload.upload') }}
-
-
-
- {{ getStringAccept }}
-
+
+
+ 选取文件
+
+
+
+ 大小不超过 {{ fileSize }}MB
+
+
+ 格式为 {{ fileType.join('/') }} 的文件
+
+
+
+
+
{{ row.file.name }}
+
+
+ 下载
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
{{ file.name }}
+
+
+ 下载
+
+
+
+
+
diff --git a/apps/web-ele/src/components/upload/use-upload.ts b/apps/web-ele/src/components/upload/use-upload.ts
index 52f723be865bcdf90324d66e8bc10e67889845bb..2f46f9e982a8d34b5d491b65f4553f00d733bd2b 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/codegen/modules/preview-code.vue b/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue
index de4486fc16f09052bfc6afd93d7895111f6086f9..f9e3df646872ec04a28637e5a50ce01eca88173f 100644
--- a/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue
+++ b/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue
@@ -7,7 +7,7 @@ import type { InfraCodegenApi } from '#/api/infra/codegen';
import { ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
-import { Copy } from '@vben/icons';
+import { IconifyIcon } from '@vben/icons';
import { useClipboard } from '@vueuse/core';
import { ElMessage, ElTabPane, ElTabs, ElTree } from 'element-plus';
@@ -291,8 +291,7 @@ const [Modal, modalApi] = useVbenModal({