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 相关文章推荐
firefox下input type=&quot;file&quot;的size是多大
Oct 24 Javascript
DOM 中的事件处理介绍
Jan 18 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
Mar 29 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
如何能分清npm cnpm npx nvm
Jan 17 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 Javascript
vue 自定义的组件绑定点击事件
Apr 21 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
简单的js计算器实现
2016/10/26 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
react redux入门示例
2018/04/19 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Python帮你识破双11的套路
2019/11/11 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
Linux文件系统类型
2012/09/16 面试题
服务员岗位责任制
2014/02/11 职场文书
机修工工作职责
2014/02/21 职场文书
委托协议书范本
2014/04/22 职场文书
幼儿园运动会口号
2014/06/07 职场文书
公司活动总结怎么写
2014/06/25 职场文书
小学生运动会报道稿
2014/09/12 职场文书
田径运动会通讯稿
2014/09/13 职场文书
个人自我剖析材料
2014/09/30 职场文书