在上傳圖片前判斷尺寸的大小,遇到了好多的坑。
1.沒有注意到onload是異步加載,所以一定要在onload后在執行判斷圖片尺寸
2.upload內部需要一個promise,簡單的return出false並沒有什么用
3.完整代碼:
beforeAvatarUpload(file) { const isSize = new Promise(function(resolve, reject) { let width = 100; let height = 100; let _URL = window.URL || window.webkitURL; let img = new Image(); img.onload = function() { let valid = img.width >= width && img.height >= height; valid ? resolve() : reject(); } img.src = _URL.createObjectURL(file); }).then(() => { return file; }, () => { this.$message.error('上傳的icon必須是等於或大於100*100!'); return Promise.reject(); }); return isSize; }