Skip to content

前端文件上传进度条显示功能

在做文件上传时,通常都会使用进度条来给用户反馈上传的进度,下面介绍两种方法。

Axios

如果你的项目中使用 Axios 进行接口请求,可以使用它自带的 onUploadProgress 事件。

JavaScript
axios.post('/api/testUpload', formData, {
   onUploadProgress: ({ total, loaded }) => {
      uploadProgress.value = (loaded / (total || 0)) * 100
   },
})

可以在 Axios 请求配置中找到相关内容。

XMLHttpRequest

原生的 xhr 可以监听 progress 事件。

JavaScript
const xhr = new XMLHttpRequest()
xhr.upload.addEventListener('progress', (event) => {
   if (event.lengthComputable) uploadProgress.value = (event.loaded / event.total) * 100
})
xhr.open('POST', '/api/testUpload', true)
xhr.send(formData)

需要注意的是:需要监听的是 XMLHttpRequest.upload ,如果你不小心写成 xhr.addEventListener('progress',... 那它只会在接口请求完毕后执行一次而已。