diff --git a/shared/index.tsx b/shared/index.tsx index 7aa233d0..d5521f46 100644 --- a/shared/index.tsx +++ b/shared/index.tsx @@ -102,4 +102,5 @@ export { version, } from './utils/environment'; export { getTextColorHex } from './utils/string-helper'; +export { uploadFile } from './utils/upload-helper'; export { sleep } from './utils/utils'; diff --git a/shared/utils/upload-helper.ts b/shared/utils/upload-helper.ts new file mode 100644 index 00000000..77ca2ae4 --- /dev/null +++ b/shared/utils/upload-helper.ts @@ -0,0 +1,36 @@ +import { request } from '../api/request'; + +interface UploadFileOptions { + onProgress?: (percent: number, progressEvent: unknown) => void; +} +interface UploadFileResult { + etag: string; + path: string; + url: string; +} + +/** + * 上传文件 + */ +export async function uploadFile( + file: File, + options: UploadFileOptions = {} +): Promise { + const form = new FormData(); + form.append('file', file); + + const { data } = await request.post('/file/v2/image/upload', form, { + onUploadProgress(progressEvent) { + if (progressEvent.lengthComputable) { + if (typeof options.onProgress === 'function') { + options.onProgress( + progressEvent.loaded / progressEvent.total, + progressEvent + ); + } + } + }, + }); + + return data; +}