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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
javascript 学习之旅 (1)
Feb 05 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
Knockout数组(observable)使用详解示例
Nov 15 Javascript
node.js中的fs.fstat方法使用说明
Dec 15 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
Bootstrap table分页问题汇总
May 30 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
vue如何实现自定义底部菜单栏
Jul 01 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
基于mysql的bbs设计(四)
2006/10/09 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
详解node.js 事件循环
2020/07/22 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python如何省略括号方法详解
2020/03/21 Python
使用python实现名片管理系统
2020/06/18 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
《鸿门宴》教学反思
2014/04/22 职场文书
企业负责人任命书
2014/06/05 职场文书
代理人委托书
2014/09/16 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
解析MySQL索引的作用
2022/03/03 MySQL