Vue项目中使用axios和element ui实现文件上传时的进度显示

html代码如下:

1
2
3
4
5
6
7
8
<div v-if="progressSeen">
  <el-progress
    :text-inside="true"
    :stroke-width="15"
    :percentage="progress"
    status="success"
  ></el-progress>
</div>

js代码如下:

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
37
38
39
40
41
42
43
export default {
  data() {
    return {
      progress: 0,
      progressSeen: false,
    }
  },
  methods: {
    submitForm(formName) {
      //显示进度
      this.progressSeen = true;

      var params = new FormData();
      params.append(xxx, xxx);

      var config = {
        headers: {
          "Content-Type": "multipart/form-data"
        },
        onUploadProgress: progressEvent => {
          var complete =
            ((progressEvent.loaded / progressEvent.total) * 100) | 0;
          this.progress = complete;
        }
      };

      var url = this.$store.state.baseUrl + "/video/upload/";

      //缓存this指针
      var self = this;

      this.axios
        .post(url, params, config)
        .then(function(response) {
            //...
        })
        .catch(function(error) {
          self.$message.error(error);
        });
        }
    }
  }
}
坚持原创技术分享,您的支持将鼓励我继续创作!