使用FileReader实现前端图片预览
在FileReader出现之前,前端的图片预览是这样实现的:把本地图片上传到服务器,服务器把图片地址返回,并把它替换到图片元素的src属性。
这种方法的缺点是:必须要先把图片上传到服务器。那么问题来了,如果上传的图片很大,而网速又很慢,这就需要等待很久预览图片才会显示出来了,而且,如果用户预览图片后发现不太满意,想重新选择一张图片,这时候还要把已经上传到服务器上的图片给删除掉。
自从有了HTML5的FileReader对象以后,预览图片变得简单多了,不再需要后台的配合,并且JS操作本地文件已经成为了可能。这种方法的思路是:通过FileReader.prototype.readAsDataURL()方法把图片文件转成base64编码,然后把base64编码替换到预览图片的src属性即可。如果想要了解更多关于FileReader对象的,可以看一下这里:FileReader https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
下面是使用FileReader进行图片预览的简单demo:
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <input type="file"><br> 9 <img src="" height="200" alt="Image preview area..." title="preview-img"> 10 <script> 11 var fileInput = document.querySelector('input[type=file]'), 12 previewImg = document.querySelector('img'); 13 fileInput.addEventListener('change', function () { 14 var file = this.files[0]; 15 var reader = new FileReader(); 16 // 监听reader对象的的onload事件,当图片加载完成时,把base64编码賦值给预览图片 17 reader.addEventListener("load", function () { 18 previewImg.src = reader.result; 19 }, false); 20 // 调用reader.readAsDataURL()方法,把图片转成base64 21 reader.readAsDataURL(file); 22 }, false); 23 </script> 24 </body> 25 </html>
关于图片预览的就写到这里啦,如果哪些地方写得不对或者问题的,亲们可以在评论提出~
今天是大年初九,也是上班的第一天,新的一年,新的开始,新的期待。祝愿亲们2017身体健康、代码无bug!
posted on 2017-02-05 15:55 ChessZhang 阅读(9955) 评论(9) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?