全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js实现前端图片上传即时预览功能

现在,在实现前端图片即时预览,可以说是一件很简单的事情了。

我们只需要用file对象和FileReader对象,既可以轻松实现,无需下载类库。

HTML代码

<!DOCTYPE html>
<html>
<body>
<img src="">
<form>
 <input type="file" name="image" />
</form>
</body>
</html>

先来说说input,input这个元素,具有一个files属性,该属性是一个filelist对象,是file对象的集合。

你可以通过input.files[0]的语法形式拿到这个file对象,不过遗憾的是,这个对象仅仅包含了用户选择的文件的相关信息,如文件名,大小,类型,最后修改时间等,并不直接提供文件的数据。

程序员只能通过这些信息对用户选择的文件进行一些限制。

所以,我们要使用另一个对象FileReader来读取到用户选择的文件的数据

我们初始化一个FileReader对象

var x=new FileReader;

这是一个初始化完成的FileReader对象具有的一些属性和支持的事件

类似于Ajax,FileReader提供了readyState来查看读取的状态,不过并没有什么卵用

因为FileReader还提供了onloadend这样的事件,来处理数据读取完成后该干些什么,onprogress是最有趣的,只要在读取数据,那么这个事件会被不停的触发,可以实现那种进度条效果。

还有一个极其重要的属性result,初始化完成时,该值是null,当读取数据后,该值就是所获得的数据。

接下来,我们就可以使用这个对象读取用户选择的图片了,没有错就是这么简单

当用户选择了某一个文件时,就会在input上触发change事件,这意味着我们可以开始读取数据了

 document.forms[0].elements[0].onchange=function(){
  x.readAsDataURL(this.files[0]);
 }

readASDateURL这个方法,可以读取一个file对象,并把数据以base64的格式填充到FileReader对象中的result属性中去。

当数据读取完毕,就会触发onloadend事件,在这个事件中,就可以把数据填到img标签中去

x.onloadend=function(){
  document.images[0].src=this.result;
 }

 完整版代码

<!DOCTYPE html>
<html>
<body>
<img src="">
<form>
 <input type="file" name="image" />
</form>
<script type="text/javascript">
 var x=new FileReader;
 document.forms[0].elements[0].onchange=function(){
  x.readAsDataURL(this.files[0]);
 }
 x.onloadend=function(){
  document.images[0].src=this.result;
 }
</script>
</body>
</html>

当然,这里只是一个小小的Demo,仅仅实现了本地预览,抛砖引玉,你还可以在此基础上轻松实现对上传文件的一些判断和限制,或者是UI上的提升。

FileReader的能力并不止步于此,不仅仅有readASDataURL这种方法。 

不仅是图片,音乐,视频都可以实现对于的本地预览,只要把result属性的值,赋值给对应的audio或video标签的src属性即可,不过因为内存限制,读取视频往往失败。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js前端图片上传即时预览  # js图片上传预览  # js上传预览  # AngularJS实现图片上传和预览功能的方法分析  # js图片上传的封装代码  # js实现图片上传预览原理分析  # JS移动端/H5同时选择多张图片上传并使用canvas压缩图片  # ajax +NodeJS 实现图片上传实例  # JS实现图片上传多次上传同一张不生效的处理方法  # 可以实现  # 中去  # 就可以  # 的是  # 是一个  # 有什么  # 就会  # 在这个  # 你可以  # 可以说  # 只需  # 会在  # 你还  # 些什么  # 这是一个  # 我们可以  # 要把  # 抛砖引玉  # 很简单  # 要用 


相关文章: 山东云建站价格为何差异显著?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何在建站主机中优化服务器配置?  如何在局域网内绑定自建网站域名?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在建站之星绑定自定义域名?  用v-html解决Vue.js渲染中html标签不被解析的问题  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  C++中引用和指针有什么区别?(代码说明)  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何快速辨别茅台真假?关键步骤解析  建站主机如何选?性能与价格怎样平衡?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何通过FTP服务器快速搭建网站?  制作旅游网站html,怎样注册旅游网站?  常州企业建站如何选择最佳模板?  高端建站三要素:定制模板、企业官网与响应式设计优化  图册素材网站设计制作软件,图册的导出方式有几种?  如何选择高效可靠的多用户建站源码资源?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何在搬瓦工VPS快速搭建网站?  建站之星伪静态规则如何设置?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  宝塔新建站点为何无法访问?如何排查?  如何快速生成ASP一键建站模板并优化安全性?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速搭建高效可靠的建站解决方案?  建站之星Pro快速搭建教程:模板选择与功能配置指南  详解jQuery停止动画——stop()方法的使用  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  简历在线制作网站免费,免费下载个人简历的网站是哪些?  建站主机CVM配置优化、SEO策略与性能提升指南  如何规划企业建站流程的关键步骤?  如何彻底删除建站之星生成的Banner?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何快速搭建个人网站并优化SEO?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  建站之星CMS五站合一模板配置与SEO优化指南  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  jQuery 常见小例汇总  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  已有域名如何免费搭建网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  重庆网站制作公司哪家好,重庆中考招生办官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。