ajax上传图片之预览图片

2 篇文章 0 订阅
1 篇文章 0 订阅

预览将要上传的图片

如果说ajax优化了用户的操作,那么预览将要上传的图片就是极致的用户体验。

那么要预览图片,要用到什么技术呢?那就是FileReader这个对象了。

FileReader是什么?

定义:

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。 --引自MDN

其中File对象可以是来自用户在一个 <input> 元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果。

如何使用

首先要new一个FileReader对象获得到他的实例,然后使用这个实例的readAsDataURL(File)方法去获取File的内容,最后加载完成后FileReader会返回一个result属性,属性中就是读取到的那个文件内容。

代码

// html

<input type="file" name="img" onchange('viewImg(this)') />

<div>
        //展示图片
</div>
// js

function viewImg(elem){
        // 先判断一个elem的文件是否是正确的格式
        var files = elem.files;
        
        if( files && files[0] && isImg(files[0].type) ){
                // 格式正确进入
                // 创建一个FileReader实例
                var fileReader = new FileReader();
                // 加载file的文件
                fileReader.readAsDataURL(files[0]);

                // 监听加载完成
                fileReader.onload = function(){
                        // result就是FileReader得到的数据内容
                        $('div').html(`<img src="${this.result}">`);
                }
        }

        
function isImg(type){
       var types = ['image/png', 'image/jpg', 'image/jpeg'];
            if( types.indexOf(type) != -1 ){
                return true;
            }
            return false;
        }
}

这样就完成图片的预览。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值