Uploader.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. export interface UploaderItem {
  2. /**
  3. * 上传文件源路径
  4. */
  5. filePath: string;
  6. /**
  7. * 上传完成后的文件路径
  8. */
  9. uploadedPath?: string;
  10. /**
  11. * 文件的大小(B)
  12. */
  13. size?: number;
  14. /**
  15. * 指示当前文件是否是图片,如果设置为 true,则预览时会调用 ImagePreview 打开,否则会调用 Linking.openURL 预览资源。
  16. */
  17. isImage?: boolean;
  18. /**
  19. * 在已上传列表中显示的预览图像,为空时使用 filePath
  20. */
  21. previewPath?: string;
  22. /**
  23. * 当前状态
  24. */
  25. state: 'notstart'|'uploading'|'success'|'fail';
  26. /**
  27. * 当失败时显示
  28. */
  29. message?: string;
  30. /**
  31. * 当前上传进度,0-100
  32. */
  33. progress?: number;
  34. /**
  35. * 取消上传回调
  36. */
  37. cancelUpload?: () => void;
  38. }
  39. export interface UploaderAction {
  40. /**
  41. * 当前上传条目
  42. */
  43. item: UploaderItem;
  44. /**
  45. * 当上传进度变化时需要调用
  46. * @param precent 当前上传百分比,0-100
  47. */
  48. onProgress: (precent: number) => void;
  49. /**
  50. * 当开始上传时需要调用
  51. */
  52. onStart: (message?: string) => void;
  53. /**
  54. * 当上传失败时需要调用
  55. * @param error 当前错误信息,会显示在条目中
  56. */
  57. onError: (error: unknown) => void;
  58. /**
  59. * 当上传完成时需要调用
  60. * @param result 上传完成后的结果
  61. * @param message 上传完成后的消息,会显示在条目中
  62. */
  63. onFinish: (result: {
  64. /**
  65. * 上传完成后的文件路径
  66. */
  67. uploadedUrl: string;
  68. /**
  69. * 上传完成后的预览图像路径,为空时不修改
  70. */
  71. previewUrl?: string;
  72. }, message?: string) => void;
  73. }
  74. export function stringUrlToUploaderItem(url: string): UploaderItem {
  75. return {
  76. filePath: url,
  77. uploadedPath: url,
  78. state: 'success',
  79. }
  80. }