全网整合营销服务商

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

免费咨询热线: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实现图片上传多次上传同一张不生效的处理方法  # 可以实现  # 中去  # 就可以  # 的是  # 是一个  # 有什么  # 就会  # 在这个  # 你可以  # 可以说  # 只需  # 会在  # 你还  # 些什么  # 这是一个  # 我们可以  # 要把  # 抛砖引玉  # 很简单  # 要用 


相关文章: 小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  常州自助建站工具推荐:低成本搭建与模板选择技巧  淘宝制作网站有哪些,淘宝网官网主页?  如何在宝塔面板创建新站点?  已有域名和空间,如何快速搭建网站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  5种Android数据存储方式汇总  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何通过VPS建站无需域名直接访问?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  建站主机选购指南:核心配置优化与品牌推荐方案  C#如何在一个XML文件中查找并替换文本内容  ,购物网站怎么盈利呢?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  上海网站制作开发公司,上海买房比较好的网站有哪些?  制作表格网站有哪些,线上表格怎么弄?  公司门户网站制作流程,华为官网怎么做?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  制作企业网站建设方案,怎样建设一个公司网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  香港网站服务器数量如何影响SEO优化效果?  长沙做网站要多少钱,长沙国安网络怎么样?  郑州企业网站制作公司,郑州招聘网站有哪些?  建站之星下载版如何获取与安装?  湖北网站制作公司有哪些,湖北清能集团官网?  建站之星收费标准详解:套餐费用及年费价格表一览  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  C++如何编写函数模板?(泛型编程入门)  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  如何制作网站标识牌,动态网站如何制作(教程)?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何在建站主机中优化服务器配置?  存储型VPS适合搭建中小型网站吗?  建站之星代理如何优化在线客服效率?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  名字制作网站免费,所有小说网站的名字?  高防服务器租用首荐平台,企业级优惠套餐快速部署  jQuery 常见小例汇总  如何高效搭建专业期货交易平台网站?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  制作网站外包平台,自动化接单网站有哪些?  TestNG的testng.xml配置文件怎么写  微信小程序 五星评分(包括半颗星评分)实例代码 

您的项目需求

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