Blame view

Yi.Vben5.Vue3/apps/web-antd/src/api/core/upload.ts 1.08 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  import type { AxiosRequestConfig } from '@vben/request';
  
  import { requestClient } from '#/api/request';
  
  /**
   * Axios上传进度事件
   */
  export type AxiosProgressEvent = AxiosRequestConfig['onUploadProgress'];
  
  /**
   * 默认上传结果
   */
  export interface UploadResult {
    url: string;
    fileName: string;
    ossId: string;
  }
  
  /**
   * 通过单文件上传接口
   * @param file 上传的文件
   * @param options 一些配置项
   * @param options.onUploadProgress 上传进度事件
   * @param options.signal 上传取消信号
   * @param options.otherData 其他请求参数 后端拓展可能会用到
   * @returns 上传结果
   */
  export function uploadApi(
    file: Blob | File,
    options?: {
      onUploadProgress?: AxiosProgressEvent;
      otherData?: Record<string, any>;
      signal?: AbortSignal;
    },
  ) {
    const { onUploadProgress, signal, otherData = {} } = options ?? {};
    return requestClient.upload<UploadResult>(
      '/resource/oss/upload',
      { file, ...otherData },
      { onUploadProgress, signal, timeout: 60_000 },
    );
  }
  
  /**
   * 上传api type
   */
  export type UploadApi = typeof uploadApi;