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 相关文章推荐
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
AngularJS转换响应内容
Jan 27 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
Vuex 进阶之模块化组织详解
Jan 12 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
node express使用HTML模板的方法示例
Aug 22 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
小程序实现投票进度条
Nov 20 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
thinkphp 多表 事务详解
2013/06/17 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
php中define用法实例
2015/07/30 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
jQuery实现简单的点赞效果
2020/05/29 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python统计文本文件内单词数量的方法
2015/05/30 Python
详解Python中的动态属性和特性
2018/04/07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
python循环输出三角形图案的例子
2019/11/22 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python集合能干吗
2020/07/19 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
银行批评与自我批评
2014/02/10 职场文书
《理想》教学反思
2014/02/17 职场文书
大课间活动实施方案
2014/03/06 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
医学会议开幕词
2016/03/03 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers