上传图片前限制图片比例&大小&格式
一下代码适用于element-ui的upload:
使用上传图片之前的before-upload钩子函数,举个例子:限制图片尺寸大小为200px*200px
beforeAvatarUpload(file) {
const isValidFormat = ["image/jpeg", "image/png"].indexOf(file.type) > -1;
const isLt2M = file.size / 1024 / 1024 < 2;
//图片类型
if (!isValidFormat) {
this.$message.error("图片只能是 JPG、jpeg或PNG 格式!");
}
//图片大小
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
let that = this
let img = new Image();
let _URL = window.URL || window.webkitURL;
img.src = _URL.createObjectURL(file);
let pixel = new Promise(function(resolve, reject) {
console.log(resolve, reject)
img.onload = function() {
console.log(img.width,img.height)
let valid;
if(img.width===200 && img.height===200){
valid = true
}else{
valid = false
}
console.log(valid)
valid ? resolve() : reject();
}
}).then(() => {
// 成功返回
return file;
}, () => {
// 不成功返回promis的reject,在element中当返回promis的reject时也会停止上传
that.$message.error('图片比列200px*200px');
return Promise.reject()
})
return isValidFormat && isLt2M && pixel;
},