注意:

  1. 上传进度使用xhr.upload.onprogress事件.
  2. 下载进度使用xhr.onprogress事件.
    上传 进度
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
<form>
<input type="file" name="avatar">
<button>上传</button>
</form>

<!-- 设置一个进度条,这里使用h5新标签,开始隐藏 -->
<progress max="0" value="0" style="display: none"></progress>

<script>
document.querySelector('form').onsubmit = function (e) {
e.preventDefault();
// 使用FormData收集输入框的值(这里是选择的图片)
var fd = new FormData(this);

// ajax提交fd对象
// 接口文档,查看ppt即可
var xhr = new XMLHttpRequest();

// 找到 进度条标签
var progress = document.querySelector('progress');
// 注册上传监听事件
xhr.upload.onprogress = function (e) {
progress.style.display = 'block';
progress.max = e.total; // 文件总大小,单位字节
progress.value = e.loaded; // 已经上传了多少字节
}
xhr.onload = function () {
console.log(this.responseText);
}
xhr.open('POST', 'http://www.itcbc.com:3006/api/formdata');
xhr.send(fd);

}
</script>

下载进度

1
2
3
4
5
xhr.onprogress = function (e) { 
progress.style.display = 'block';
progress.max = e.total; // 文件总大小,单位字节 progress.value = e.loaded; // 已经上传了多少字节
}