700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > FileReader实现上传图片之前本地先预览

FileReader实现上传图片之前本地先预览

时间:2024-04-20 18:27:53

相关推荐

FileReader实现上传图片之前本地先预览

web前端|js教程

FileReader,之前,图片

web前端-js教程

二手php源码交易,vscode 如何拓展c,ubuntu 配地址,tomcat处理并发请求,爬虫群聊,ctp php,武汉seo 关键词,人人商城网站变成一级域名,家电照明电子通用网站模板lzw

这次给大家带来FileReader实现上传图片之前本地先预览,FileReader实现上传图片之前本地先预览的注意事项有哪些,下面就是实战案例,一起来看一下。

返回网页顶部源码,ubuntu当前显卡驱动,tomcat7w启动不,爬虫table用法,php北京平均工资,seo长沙培训lzw

引子

印章图片源码,vscode不能安装插件,Ubuntu重写mbr,tomcat 32bit,爬虫hook,php168整站,永济seo排名优化,网站在线浮动客户服务,炫酷登录界面模板免费下载lzw

平时做图片上传预览时如果没有特殊的要求就直接先把图片传到后台去,成功之后拿到URL再渲染到页面上,这样做在图片比较小的时候没什么问题,大一点的话就会比较慢才能看到预览了,而且还产生了垃圾文件,所以比较好的是上传之前先在本地预览一下。

之前做项找插件的时候就知道纯前端可以实现图片本地预览,可今天面试的时候被问到时竟然一脸懵逼,然后竟然无意中就在电脑桌面发现了实现的demo,然后根据demo查了一下API,稍微总结下:

首先得拿到File对象

当用input标签上传图片时event对象中会包含file对象的一个集合

event.target.files

核心是FileReader对象

根据MDN上的说法:

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

首先要作为构造函数得到一个FileReader的实例对象

var freader = new FileReader();

利用readAsDataURL()方法读取指定的内容

freader.readAsDataURL(file);

最后就是一个事件处理,相当于监控读取进度,我们这里是当读取完成时渲染图片,所以用onload

freader.onload = function(e) { console.log(e); myImg.setAttribute(src, e.target.result); }

这里架加载完成之后最终得到的是一个base64编码的src地址,具体为什么下次查清楚了再专门写篇关于base64编码的文章

完整代码

Documentfunction changImg(e){ var myImg = document.getElementById(myImg); for (var i = 0; i < e.target.files.length; i++) { var file = e.target.files[i]; console.log(file); if (!(/^image\/.*$/i.test(file.type))) { continue; //不是图片 就跳出这一次循环 } //实例化FileReader API var freader = new FileReader(); freader.readAsDataURL(file); freader.onload = function(e) { console.log(e); myImg.setAttribute(src, e.target.result); } } }

后记

通过这件事就暴露了我学习新东西的一个问题,就是查出来看一遍觉得知道了就行了,这种习惯是特别害人的,以后每当有个疑问查出来之后不仅要查是怎么做的,还要了解一下为什么可以这么做,所谓知其然知其所以然。还有就是平时的代码能用手敲的尽量别复制,复制一时是爽了,可要手写的时候写不出来也是听尴尬的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。