html
<input style="display: none" type="file" ref="selectFile" @change="fileChange" accept="image/png,image/jpeg,image/jpg,image/JPEG,image/PNG,image/JPG" />
// 点击按钮触发上传文件
<el-button @click="selectFile">选择图片</el-button>
js
selectFile() {
this.$refs.selectFile.dispatchEvent(new MouseEvent('click')) ;
}
fileChange(e) {
let files = e.target.files;
if(0 === files.length) {
return;
}
if(files[0].size >= 10485760) {
this.$refs.selectFile.value = "";
return;
}
let that = this;
let fileReader = new FileReader();
fileReader.readAsDataURL(files[0]);
fileReader.onload = function(ev) {
try {
let img = new Image();
img.src = ev.target.result;
img.onload = function (eve) {
let canvas = document.createElement('canvas');
let context = canvas.getContext('2d');
canvas.width = img.width;
canvas.height = img.height;
context.clearRect(0, 0, img.width, img.height);
context.drawImage(this, 0, 0, img.width, img.height);
let data = "";
if (files[0].size <= 524288) {
data = canvas.toDataURL('image/jpeg');
}
else {
data = canvas.toDataURL('image/jpeg', 0.1);
}
that.$refs.selectFile.value = "";
}
} catch (e) {
}
};
}