useUpload.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import type { UploadRawFile } from 'element-plus'
  2. const message = useMessage() // 消息
  3. enum MaterialType {
  4. Image = 'image',
  5. Voice = 'voice',
  6. Video = 'video'
  7. }
  8. const useBeforeUpload = (type: MaterialType, maxSizeMB: number) => {
  9. const fn = (rawFile: UploadRawFile): boolean => {
  10. let allowTypes: string[] = []
  11. let name = ''
  12. switch (type) {
  13. case MaterialType.Image:
  14. allowTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/jpg']
  15. maxSizeMB = 2
  16. name = '图片'
  17. break
  18. case MaterialType.Voice:
  19. allowTypes = ['audio/mp3', 'audio/mpeg', 'audio/wma', 'audio/wav', 'audio/amr']
  20. maxSizeMB = 2
  21. name = '语音'
  22. break
  23. case MaterialType.Video:
  24. allowTypes = ['video/mp4']
  25. maxSizeMB = 10
  26. name = '视频'
  27. break
  28. }
  29. // 格式不正确
  30. if (!allowTypes.includes(rawFile.type)) {
  31. message.error(`上传${name}格式不对!`)
  32. return false
  33. }
  34. // 大小不正确
  35. if (rawFile.size / 1024 / 1024 > maxSizeMB) {
  36. message.error(`上传${name}大小不能超过${maxSizeMB}M!`)
  37. return false
  38. }
  39. return true
  40. }
  41. return fn
  42. }
  43. export { MaterialType, useBeforeUpload }