Vue.js中利用axios实现文件上传进度实时更新

XHR二级增加了progress事件,我们可以据此在浏览器接收新数据期间添加实时数据进度条,从而使得交互更加友好

Vue模板

<div class="progress" @click="upload"
    :style="{backgroundImage:'linear-gradient(to right,#C0C7CB 0%,#C0C7CB ' + progress + ',#E1E6E9 ' + progress + ',#E1E6E9 100%)'}">

Vue JavaScript

var form = new FormData()
form.append('file', vm.$refs.upload.files[0])
form.append('name', name)
var config = {
  onUploadProgress: progressEvent => {
    var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
    this.progress = complete
  },
  headers: {
    'Content-Type': 'multipart/form-data'
  }
}
axios.post(`api/upload_file`,
  form, config).then((res) => {
  if (res.data.status === 'success') {
    console.log('上传成功')
  }
})

关键点在于progress事件,而axios对ajax封装之后需要在axios的config参数里面定义事件处理函数

上一篇 Vue中使用highlight.js
下一篇 Vue更好的HTTP框架axios.js
目录
文章列表
1 Android检查手机是否被root
Android检查手机是否被root
2
深度学习基础:线性代数(3)_逆矩阵与伪逆矩阵
深度学习基础:线性代数(3)_逆矩阵与伪逆矩阵
3
Android WebView内所有请求实现自定义Header
Android WebView内所有请求实现自定义Header
4
Swift UI - 使用UIWebView和UIToolbar制作一个浏览器
Swift UI - 使用UIWebView和UIToolbar制作一个浏览器
5
Android全局Context无侵入式获取
Android全局Context无侵入式获取
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。