|
import { upload } from '@/service/base' |
|
|
|
type ImageUploadParams = { |
|
file: File |
|
onProgressCallback: (progress: number) => void |
|
onSuccessCallback: (res: { id: string }) => void |
|
onErrorCallback: () => void |
|
} |
|
type ImageUpload = (v: ImageUploadParams, isPublic?: boolean, url?: string) => void |
|
export const imageUpload: ImageUpload = ({ |
|
file, |
|
onProgressCallback, |
|
onSuccessCallback, |
|
onErrorCallback, |
|
}, isPublic, url) => { |
|
const formData = new FormData() |
|
formData.append('file', file) |
|
const onProgress = (e: ProgressEvent) => { |
|
if (e.lengthComputable) { |
|
const percent = Math.floor(e.loaded / e.total * 100) |
|
onProgressCallback(percent) |
|
} |
|
} |
|
|
|
upload({ |
|
xhr: new XMLHttpRequest(), |
|
data: formData, |
|
onprogress: onProgress, |
|
}, isPublic, url) |
|
.then((res: { id: string }) => { |
|
onSuccessCallback(res) |
|
}) |
|
.catch(() => { |
|
onErrorCallback() |
|
}) |
|
} |
|
|