JavaSctit 利用FileReader和滤镜上传图片预览功能


Posted in Javascript onSeptember 05, 2017

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File或 Blob对象指定要读取的文件或数据。

1、FileReader接口的方法

FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

JavaSctit 利用FileReader和滤镜上传图片预览功能

2、FileReader接口事件

FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

JavaSctit 利用FileReader和滤镜上传图片预览功能

重点介绍下:readAsDataURL

开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容这个方法很有用,

比如,可以实现图片的本地预览

IE10以下的版本不支持FileReader()构造函数.不过可以利用滤镜来兼容旧版本的IE:兼容IE的图片本地预览.

<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Image preview example</title>
<script type="text/javascript">
var loadImageFile = (function () {
  if (window.FileReader) {
    var  oPreviewImg = null, oFReader = new window.FileReader(),
      rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;
    oFReader.onload = function (oFREvent) {
      if (!oPreviewImg) {
        var newPreview = document.getElementById("imagePreview");
        oPreviewImg = new Image();
        oPreviewImg.style.width = (newPreview.offsetWidth).toString() + "px";
        oPreviewImg.style.height = (newPreview.offsetHeight).toString() + "px";
        newPreview.appendChild(oPreviewImg);
      }
      oPreviewImg.src = oFREvent.target.result;
    };
    return function () {
      var aFiles = document.getElementById("imageInput").files;
      if (aFiles.length === 0) { return; }
      if (!rFilter.test(aFiles[0].type)) { alert("You must select a valid image file!"); return; }
      oFReader.readAsDataURL(aFiles[0]);
    }
  }
  if (navigator.appName === "Microsoft Internet Explorer") {
    return function () {
      document.getElementById("imagePreview").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("imageInput").value;
    }
  }
})();
</script>
<style type="text/css">
#imagePreview {
  width: 160px;
  height: 120px;
  float: right;
  filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
}
</style>
</head>
<body>
<div id="imagePreview"></div>
<form name="uploadForm">
<p><input id="imageInput" type="file" name="myPhoto" onchange="loadImageFile();" /><br />
<input type="submit" value="Send" /></p>
</form>
</body>
</html>

看看在IE7下的效果

JavaSctit 利用FileReader和滤镜上传图片预览功能

谷歌的效果

JavaSctit 利用FileReader和滤镜上传图片预览功能

很好,都很完美。具体参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader

总结

以上所述是小编给大家介绍的JavaSctit 利用FileReader和滤镜上传图片预览功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS画5角星方法介绍
Sep 17 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
js生成随机数的过程解析
Nov 24 Javascript
Bootstrap表单控件使用方法详解
Jan 11 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
vue组件学习教程
Sep 09 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
Sep 28 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
Mar 09 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 #jQuery
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 #Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 #Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 #Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 #Javascript
Angular实现下载安装包的功能代码分享
Sep 05 #Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 #Javascript
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
input 高级限制级用法
2009/03/26 Javascript
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
js实现进度条的方法
2015/02/13 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
用pycharm开发django项目示例代码
2018/10/24 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python猜数字算法题详解
2020/03/01 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
消防安全管理制度
2014/02/01 职场文书
汇源肾宝广告词
2014/03/20 职场文书
学校教师读书活动总结
2014/07/08 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
起诉状范本
2015/05/20 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
公司保洁员管理制度
2015/08/04 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP