1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| 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()
| })
| }
|
|