1、废话不多说,直接上代码。
校验方法:
checkImg(file) {
const isSize = new Promise((resolve, reject) => {
const _URL = window.URL || window.webkitURL;
let img = new Image();
img.onload = () => {
const valid = img.width === this.imgW && img.height === this.imgH;
valid ? resolve() : reject();
};
img.src = _URL.createObjectURL(file);
}).then(
() => {
this.$emit("beforeUpload", file);
return file;
},
() => {
this.msgError(`图片尺寸大小必须为${this.imgW}*${this.imgH}`); // 我这里是将upload组件进一步封装了, imgW, imgH是图片限制的条件参数
return Promise.reject(false);
}
);
return isSize;
},
- 由于图片加载方法onload是异步的, 所以一开始通过图片参数和校验的条件来判断, 无法达到想要的效果, 图片依然可以上传成功。这就是onload方法是异步导致。所以解决办法就是