lrz:图片压缩上传

lrz图片压缩

npm install lrz
// main.js引入
import lrz from 'lrz'
<input type="file" @change="upfileimg($event)">
//上传图片
methods:{
	upfileimg(e) {
	    this.$toast.loading({ duration: 0, forbidClick: true, mask: false, message: '图片上传中', });
	    let file = e.target.files[0];
	    // 图片开始压缩,获得压缩后的rst参数
	    lrz(file, { quality: 0.3 }).then(rst => {
	        this.$toast.clear();
	        let userfile = this.upfile(rst.base64, rst.origin.name);//调用自己的upfile方法吧压缩后的base64转二进制
	        let formdata = new FormData();
	        formdata.append('img', userfile);
	        this.axios.post('api/ucenter/edit_pic', formdata).then(res => {
	            if (res.status == 1) {
	                this.userimg = res.data.img;
	                this.$toast('头像上传成功')
	                e.target.value = '';//重置一遍value,至关重要,防止第二次上传相同图片,或者取消上传报错
	            }
	        })
	    });
	},
	
	/*将base64转换为file*/
	dataURLtoFile(dataurl, filename) { //将base64转换为文件
	    var arr = dataurl.split(','),
	        mime = arr[0].match(/:(.*?);/)[1],
	        bstr = atob(arr[1]),
	        n = bstr.length,
	        u8arr = new Uint8Array(n);
	    while (n--) {
	        u8arr[n] = bstr.charCodeAt(n);
	    }
	    return new File([u8arr], filename, {
	        type: mime
	    });
	}
}

图片上传成功重置一遍value至关重要,防止第二次上传相同图片,或者取消上传报错
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值