1. 1. 需求
  2. 2. 实现
    1. 2.1. 上传进度
    2. 2.2. 取消上传
Axios上传进度与取消

需求

需要实现一个实时展示上传文件进度百分比的展示列表,并且可以中断取消上传。

由于项目中的接口调用都是使用Axios,所以需要基于Axios去实现。

实现

上传进度

1
2
3
4
5
6
7
let form = new FormData()
form.append('file', file)
axios.post(url, form, {
onUploadProgress: progressEvent => {
const complete = (progressEvent.loaded / progressEvent.total * 100 | 0) // 得到上传的进度百分比
}
})

取消上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { CancelToken } from 'axios'

let cancel = null
let form = new FormData()
form.append('file', file)
axios.post(url, form, {
cancelToken: new CancelToken(c => {
// 需要获取到这个请求的cancelToken
cancel = c
}),
onUploadProgress: progressEvent => {
const complete = (progressEvent.loaded / progressEvent.total * 100 | 0) // 得到上传的进度百分比
}
})

cancel() // 在需要中断请求的时候调用