123456789101112131415161718192021222324252627282930313233343536 |
- 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()
- })
- }
|