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 相关文章推荐
我的Node.js学习之路(一)
Jul 06 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 Javascript
js获取form的方法
May 06 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
原生js实现弹窗消息动画
Nov 20 Javascript
vscode自定义vue模板的实现
Jan 27 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
一个显示天气预报的程序
2006/10/09 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
wxPython事件驱动实例详解
2014/09/28 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
python对象及面向对象技术详解
2016/07/19 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
python内置模块之上下文管理contextlib
2022/06/14 Python