获取要上传的文件
使用el-upload
的beforeUpload
方法
beforeUpload
:上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<el-upload
ref="upload"
:action="postIP"
:limit="1"
:onError="uploadError"
:onSuccess="uploadSuccess"
:beforeUpload="beforeUpload"
>
<el-button slot="trigger" size="small" type="primary">选取人员信息 EXCEL 文件上传</el-button>
</el-upload>
获取文件
beforeUpload(file) {
return utils.calcMd5(file).then(res => {
return Promise.resolve();
} else {
return Promise.reject();
}
});
获取到文件以后调用计算 md5 的函数,计算成功返回Promise.resolve()
,文件进行上传,否则返回Promise.reject()
,文件不上传.
计算文件的 md5 值是一个比较耗时的操作,为了保证计算完文件的 md5 值以后再上传文件,calcMd5()
中也使用了promise
.
计算文件的 md5 值
文件分割
考虑到上传的文件可能很大,所以将文件分割.
1 | //分割文件同时考虑到浏览器的兼容性 |
调用 sparkMd5
1 | spark = new SparkMD5.ArrayBuffer(), |
完整代码
1 | calcMd5(file) { |