图片上传时实现本地预览功能的原理解析

欢迎访问我的个人博客 http://xiaolongwu.cn/
前言

最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效果的实现原理;

实现原理

通过input的 type = file属性和window的内置FileReader对象,利用FileReader对象的readAsDataURL方法,把图片数据转成base64字符串数据,然后把这个base64字符串数据赋值给一个图片标签的src。

伪代码
//input标签,获取本地图片
<input type="file" onchange="uploadImg(this)" accept="image/*"/>

//预览图片标签
 <img id="viewImg"/>


 function uploadImg(fileDom) {
    //取到file文件的本地路径,就是你电脑上的存储路径
    console.log(fileDom.value);

    // 获取图片数据对象
    var file = fileDom.files[0];

    // 获取图片名字
    console.log(file.name); 

    // 获取图片文件大小,单位为byte
    console.log(file.size);

    var reader = new FileReader();
    reader.readAsDataURL(file);

    //确保文件成功获取,base64数据量比较大
    reader.onload = function (event) {
        var e = event || window.event
        var img = document.getElementById("viewImg");
        img.src = e.target.result;
        //或者 img.src = this.result; 因为e.target == this
    }
}
知识延伸

FileReader除了readAsDataURL方法之外,还有另外两个比较重要的方法,分别为readAsBinaryString 将选择的文件读取成二进制和readAsText将选择的文件读取成文本格式 ;


如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。

邮箱:wuxiaolong802@163.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值