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实现类似淘宝购物车全选状态示例
Jun 26 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
Nov 28 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 Javascript
selenium+java中用js来完成日期的修改
Oct 31 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
Nov 02 Javascript
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读注册表
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python将多份excel表格整理成一份表格
2018/01/03 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python中tab键是什么意思
2020/06/18 Python
django form和field具体方法和属性说明
2020/07/09 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
J2EE面试题大全
2016/08/06 面试题
优秀英语专业毕业生求职信
2013/11/23 职场文书
董事长秘书岗位职责
2013/11/29 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
励志演讲稿大全
2014/08/21 职场文书
给客户的检讨书
2014/12/21 职场文书
新生开学寄语大全
2015/05/28 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS