项目中 有一个上传文件的需求 上传格式是formData。 最开始是使用假的进度条, 后面发现 上传的文件 有可能会有几百M,这时假的进度条就失去作用了。
Api接口
export function manuaImportData(data, config) {
return service({
url: `/bill/receive/import`,
method: 'post',
timeout: Infinity,
// 上传时间 如果文件过大 超时时间设置为无穷大
...config,
data
})
}
实现页面
// 我的进度条是一个弹窗 上传时就打开
this.dialogVisible = true
this.progressFlag = true // 这个是进度条的类名判断
const data = this.formData.file
const config = {
onUploadProgress: progressEvent => {
// progressEvent.loaded ==> 已上传的大小
// progressEvent.total ==> 文件大小
const percentCompleted = Math.round((progressEvent.loaded * 100) /
progressEvent.total)
// 进度条的数字
this.percent = percentCompleted
}
}
manuaImportData(data, config).then(res => {
if (res.code === 200) {
this.percent = 100
this.dialogVisible = false
this.progressFlag = false
this.percent = 0
}
}).catch(err => {
console.log(err)
this.percent = 0
this.progressFlag = false
this.dialogVisible = false
})