JavaScript使用FileReader实现图片上传预览效果


Posted in Javascript onMarch 27, 2020

FileReader是HTML5 File API的一部分。它实现了一种异步文件读取机制。可以把FileReader想象为XMLHttpRequest,区别只是它读取的是文件系统,而不是远程服务器。为了读取文件中的数据,FileReader提供了如下几个方法。

  • readAsText(file,encoding):以纯文本的方式读取文件,将读取到的文件保存到result属性中。
  • readAsDataURL(file):读取文件并将文件以数据URI的形式保存在result属性中。
  • readAsBinaryString(file):读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一个字节。
  • readAsArrayBuffer(file):读取文件并将一个包含文件内容的ArrayBuffer保存在result属性中。
  • multiple 属性表示支持多张图片
<div id="wrapper">  
 <input id="fileUpload" type="file" multiple /><br />
 <div id="image-holder"> </div>
</div>
$("#fileUpload").on('change', function () {
 
 //获取上传文件的数量
 var countFiles = $(this)[0].files.length;
 
 var imgPath = $(this)[0].value;
 var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
 var image_holder = $("#image-holder");
 image_holder.empty();
 
 if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
  if (typeof (FileReader) != "undefined") {
 
   // 循环所有要上传的图片
   for (var i = 0; i < countFiles; i++) {
 
    var reader = new FileReader();
    reader.onload = function (e) {
     $("<img />", {
      "src": e.target.result,
       "class": "thumb-image"
     }).appendTo(image_holder);
    }
 
    image_holder.show();
    reader.readAsDataURL($(this)[0].files[i]);
   }
 
  } else {
   alert("你的浏览器不支持FileReader!");
  }
 } else {
  alert("请选择图像文件。");
 }
});

FileReader 可以支持 Internet Explorer 10+、FireFox,、Chrome 和Opera浏览器。

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

Javascript 相关文章推荐
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
jquery实现点击弹出层效果的简单实例
Mar 03 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
node.js 抓取代理ip实例代码
Apr 30 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
Node.js+ELK日志规范的实现
May 23 Javascript
Vue组件实现触底判断
Jun 26 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
js防刷新的倒计时代码 js倒计时代码
Sep 06 #Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 #Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 #Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
Sep 06 #Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 #Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 #Javascript
jquery实现限制textarea输入字数的方法
Sep 06 #jQuery
You might like
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
php防攻击代码升级版
2010/12/29 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
Python转码问题的解决方法
2008/10/07 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
flask-restful使用总结
2018/12/04 Python
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
求职自我推荐信
2015/03/24 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
总结Pyinstaller打包的高级用法
2021/06/28 Python