前言: 我们在使用vant uploader组件的时候,除了需要校验单张图片上传大小,有时候还要验证多张图片一共的大小。
我们知道uploader组件有max-size和oversize事件,在文件超过限制的时候触发。但图片大小之和怎么计算呢?
after-read
在查看vant官方文档的时候发现当图片读取完成后的回调函数时after-read。

我们把函数传递的参数打印一下,发现里面的content部分是base64格式的图片,一张2.4M大小的图片base64格式看起来就如下图。

函数处理
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
| function baseSize(file) { var content = file.content; var str = content.replace('data:image/png;base64,', ''); var equalIndex = str.indexOf('='); if(str.indexOf('=')>0) { str=str.substring(0, equalIndex); } var strLength=str.length; var fileLength=parseInt(strLength-(strLength/8)*2); var size = ""; size = (fileLength / 1024).toFixed(2); var sizeStr = size + ""; var index = sizeStr.indexOf("."); var dou = sizeStr.substr(index + 1, 2) if (dou == "00") { return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2) } return size; }
|
结果
如图,我们就能计算这张图片的实际大小了
