upload.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { defHttp } from '@jeesite/core/utils/http/axios';
  2. import { UploadFileParams } from '@jeesite/types/axios';
  3. import { useGlobSetting } from '@jeesite/core/hooks/setting';
  4. import { BasicModel } from '@jeesite/core/api/model/baseModel';
  5. import { AxiosProgressEvent } from 'axios';
  6. const { ctxPath, adminPath } = useGlobSetting();
  7. export interface UploadApiResult {
  8. code: string;
  9. // url: string;
  10. result: string;
  11. message: string;
  12. fileEntityId: string;
  13. fileUploadId: string;
  14. fileUpload: FileUpload;
  15. }
  16. export interface FileEntity extends BasicModel<FileEntity> {
  17. fileId: string;
  18. fileMd5: string;
  19. filePath: string;
  20. fileContentType: string;
  21. fileExtension: string;
  22. fileSize: number;
  23. fileMeta: string;
  24. fileMetaMap: any;
  25. filePreview: string;
  26. }
  27. export interface FileUpload extends BasicModel<FileUpload> {
  28. fileEntity: FileEntity;
  29. fileName: string;
  30. fileType: string;
  31. fileSort: number;
  32. bizKey: string;
  33. bizType: string;
  34. bizKeyIsLike: string;
  35. fileUrl?: string;
  36. }
  37. export interface UploadParams {
  38. maxFileSize: number;
  39. imageAllowSuffixes: string;
  40. mediaAllowSuffixes: string;
  41. fileAllowSuffixes: string;
  42. imageMaxWidth?: number;
  43. imageMaxHeight?: number;
  44. checkmd5?: boolean;
  45. chunked?: boolean;
  46. chunkSize?: number;
  47. threads?: number;
  48. }
  49. /**
  50. * @description: Upload interface
  51. */
  52. export function uploadFile(
  53. params: UploadFileParams,
  54. onUploadProgress: (progressEvent: ProgressEvent | AxiosProgressEvent) => void,
  55. apiUploadUrl?: string,
  56. ) {
  57. if (params.file != undefined) {
  58. return defHttp.uploadFile<UploadApiResult>(
  59. {
  60. url: apiUploadUrl || ctxPath + adminPath + '/file/upload',
  61. onUploadProgress,
  62. },
  63. params,
  64. );
  65. } else {
  66. return defHttp.post(
  67. { url: apiUploadUrl || ctxPath + adminPath + '/file/upload', params },
  68. { errorMessageMode: 'none', apiUrl: '', urlPrefix: '' },
  69. );
  70. }
  71. }
  72. export const uploadFileList = (params?: FileUpload | any, apiFileListUrl?: string) =>
  73. defHttp.get<FileUpload[]>(
  74. { url: apiFileListUrl || ctxPath + adminPath + '/file/fileList', params },
  75. { errorMessageMode: 'none', apiUrl: '', urlPrefix: '' },
  76. );
  77. export const uploadParams = () => defHttp.get<UploadParams>({ url: adminPath + '/file/params' });