fileChange(e) {
let that = this;
let p1 = new Promise((resolve, reject) => {
let file = e.target.files[0];
let size = file.size / 1024;
console.log('size', size);
if (!/image\/\w+/.test(file.type)) {
that.$vux.alert.show({
title: '提示!',
content: '只能上传图片格式'
});
return false;
} else {
let img = new Image();
let reader = new FileReader();
reader.readAsDataURL(file);
resolve({'img': img, 'reader': reader})
}
});
p1.then(obj => {
that.readerOnload(obj).then(res => {
let fileN = that.toFile(that.realBase64, '');
console.log('压缩后size', fileN.size / 1024);
let postData = {file: that.realBase64};
api.user.uploadSignature(postData).then(res => {
if (res.length !== 0) {
api.user.saveSign({filePath: res}).then(data => {
if (data === 'success') {
that.$vux.alert.show({
title: '提示!',
content: '签名上传成功'
});
}
})
}
}).catch(err => {
console.log(err);
});
});
});
setTimeout(() => {
}, 1000)
},
readerOnload(obj) {
let that = this;
let reader = obj.reader;
let img = obj.img;
let p2 = new Promise((resolve, reject) => {
reader.onload = function () {
let width = 400; // 图像大小
let height = 120; // 图像大小
let quality = 0.8; // 图像质量
let canvas = document.createElement('canvas');
let drawer = canvas.getContext('2d');
that.imgPath = this.result;
img.src = this.result;
img.onload = function () {
canvas.width = width;
canvas.height = height;
drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
img.src = canvas.toDataURL('image/png', quality);
that.realBase64 = canvas.toDataURL('image/png', quality);
resolve(that.realBase64);
}
};
});
return p2;
},
toFile(dataurl, filename) {
let arr = dataurl.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {type: mime});
},
文件压缩上传
最新推荐文章于 2024-02-03 11:40:16 发布