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 相关文章推荐
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
Jun 05 Javascript
jQuery使用andSelf()来包含之前的选择集
May 19 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
JavaScript实现输入框(密码框)出现提示语
Jan 12 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 Javascript
es6数值的扩展方法
Mar 11 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 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+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
node网页分段渲染详解
2016/09/05 Javascript
js实现文字截断功能
2016/09/14 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
浅谈js中的this问题
2017/08/31 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
Python的面向对象思想分析
2015/01/14 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python基础之入门必看操作
2017/07/26 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Python json读写方式和字典相互转化
2020/04/18 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
公司道歉信范文
2014/01/09 职场文书
追悼会主持词
2014/03/20 职场文书
伊琍体标语
2014/06/25 职场文书
推广普通话的宣传语
2015/07/13 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python