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 相关文章推荐
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
基于vue-resource jsonp跨域问题的解决方法
Feb 03 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 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
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
php 常用字符串函数总结
2008/03/15 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
详解python字节码
2018/02/07 Python
Django实现分页功能
2018/07/02 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
Python多线程的退出控制实现
2020/08/10 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
python语言中pandas字符串分割str.split()函数
2022/08/05 Python