1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import type { UploadProps, UploadRawFile } from 'element-plus'
- import { getAccessToken } from '@/utils/auth'
- const message = useMessage() // 消息
- const HEADERS = { Authorization: 'Bearer ' + getAccessToken() } // 请求头
- // const UPLOAD_URL = 'http://127.0.0.1:8000/upload/' // 上传地址
- const UPLOAD_URL = import.meta.env.VITE_BASE_URL + '/admin-api/mp/material/upload-permanent' // 上传地址
- enum MaterialType {
- Image = 'image',
- Voice = 'voice',
- Video = 'video'
- }
- interface UploadData {
- type: MaterialType
- title: string
- introduction: string
- }
- const beforeUpload = (rawFile: UploadRawFile, materialType: MaterialType): boolean => {
- let allowTypes: string[] = []
- let maxSizeMB = 0
- let name = ''
- switch (materialType) {
- case MaterialType.Image:
- allowTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/jpg']
- maxSizeMB = 2
- name = '图片'
- break
- case MaterialType.Voice:
- allowTypes = ['audio/mp3', 'audio/mpeg', 'audio/wma', 'audio/wav', 'audio/amr']
- maxSizeMB = 2
- name = '图片'
- break
- case MaterialType.Video:
- allowTypes = ['video/mp4']
- maxSizeMB = 10
- name = '视频'
- break
- }
- // 格式不正确
- if (!allowTypes.includes(rawFile.type)) {
- message.error(`上传${name}格式不对!`)
- return false
- }
- // 大小不正确
- if (rawFile.size / 1024 / 1024 > maxSizeMB) {
- message.error(`上传${name}大小不能超过${maxSizeMB}M!`)
- return false
- }
- return true
- }
- const beforeImageUpload: UploadProps['beforeUpload'] = (rawFile: UploadRawFile) =>
- beforeUpload(rawFile, MaterialType.Image)
- const beforeVoiceUpload: UploadProps['beforeUpload'] = (rawFile: UploadRawFile) =>
- beforeUpload(rawFile, MaterialType.Voice)
- const beforeVideoUpload: UploadProps['beforeUpload'] = (rawFile: UploadRawFile) =>
- beforeUpload(rawFile, MaterialType.Video)
- export {
- HEADERS,
- UPLOAD_URL,
- MaterialType,
- UploadData,
- beforeImageUpload,
- beforeVoiceUpload,
- beforeVideoUpload
- }
|