优化useUploadFile、useDeleteFile、useGetFile

master
LiuJiaNan 2025-11-04 10:07:18 +08:00
parent 816bb2d071
commit 8845deefb2
5 changed files with 26 additions and 8 deletions

View File

@ -16,10 +16,16 @@ function useDeleteFile(returnType = "object") {
setLoading(true); setLoading(true);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const { files, single = true } = options; const { files = [], single = true } = options;
if (!files) if (!files)
throw new Error("请传入 files"); throw new Error("请传入 files");
if (!Array.isArray(files))
throw new Error("请传入有效的 files");
// 如果没有文件则直接返回
if (files.length === 0)
resolve();
// 发送请求 // 发送请求
request( request(

View File

@ -3,7 +3,6 @@ export interface GetFileOptions {
eqType: number; eqType: number;
/** 外键ID */ /** 外键ID */
eqForeignKey: string; eqForeignKey: string;
[key: string]: any;
} }
export interface FileItem { export interface FileItem {

View File

@ -27,7 +27,7 @@ function useGetFile(returnType = "object") {
if (!Object.values(UPLOAD_FILE_TYPE_ENUM).includes(eqType)) if (!Object.values(UPLOAD_FILE_TYPE_ENUM).includes(eqType))
throw new Error("传入的 eqType 不在 UPLOAD_FILE_TYPE_ENUM 中"); throw new Error("传入的 eqType 不在 UPLOAD_FILE_TYPE_ENUM 中");
if (!eqForeignKey) if (eqForeignKey === undefined || eqForeignKey === null)
throw new Error("请传入 options.eqForeignKey"); throw new Error("请传入 options.eqForeignKey");
// 发送请求 // 发送请求

View File

@ -13,7 +13,6 @@ export interface BaseParams {
type: number; type: number;
/** 企业id */ /** 企业id */
corpinfoId?: string; corpinfoId?: string;
[key: string]: any;
} }
export interface SingleParams extends BaseParams { export interface SingleParams extends BaseParams {
@ -44,16 +43,20 @@ export interface MultipleUploadFileOptions {
params: MultipleParams; params: MultipleParams;
} }
export interface SingleFileResponse {
/** 文件路径 */
filePath: string;
[key: string]: any;
}
export interface MultipleFileResponse { export interface MultipleFileResponse {
/** 文件列表 */
files: string[];
/** 文件ID */ /** 文件ID */
id: string; id: string;
[key: string]: any; [key: string]: any;
} }
export interface UploadFileFunction { export interface UploadFileFunction {
(options: SingleUploadFileOptions): Promise<string>; (options: SingleUploadFileOptions): Promise<SingleFileResponse>;
(options: MultipleUploadFileOptions): Promise<MultipleFileResponse>; (options: MultipleUploadFileOptions): Promise<MultipleFileResponse>;
} }

View File

@ -17,10 +17,12 @@ function useUploadFile(returnType = "object") {
setLoading(true); setLoading(true);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const { files, single = true, params } = options; const { files = [], single = true, params } = options;
if (!files) if (!files)
throw new Error("请传入 files"); throw new Error("请传入 files");
if (!Array.isArray(files))
throw new Error("请传入有效的 files");
if (!params) if (!params)
throw new Error("请传入 options.params"); throw new Error("请传入 options.params");
if (!params.type) if (!params.type)
@ -39,6 +41,14 @@ function useUploadFile(returnType = "object") {
if (!single && (params.foreignKey === undefined || params.foreignKey === null)) if (!single && (params.foreignKey === undefined || params.foreignKey === null))
throw new Error("请传入 options.params.foreignKey"); throw new Error("请传入 options.params.foreignKey");
// 如果没有文件则直接返回
if (files.length === 0)
resolve(
single
? { filePath: '' }
: { id: '' },
);
const formData = new FormData(); const formData = new FormData();
// 将文件添加到formData中 // 将文件添加到formData中