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 相关文章推荐
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
JQquery的一些使用心得分享
Aug 01 Javascript
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
jQuery中的val()示例应用
Feb 26 Javascript
jquery中one()方法的用法实例
Jan 16 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
jquery插件方式实现table查询功能的简单实例
Jun 06 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
JavaScript中构造函数与原型链之间的关系详解
Feb 25 Javascript
JavaScript中while循环的基础使用教程
Aug 11 Javascript
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实现采集程序原理和简单示例代码
2007/03/18 PHP
中英文字符串翻转函数
2008/12/09 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python应用库大全总结
2018/05/30 Python
django 环境变量配置过程详解
2019/08/06 Python
简单了解python协程的相关知识
2019/08/31 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
10条PHP编程习惯
2014/05/26 面试题
财务经理的岗位职责
2013/12/17 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
工伤私了协议书范本
2014/11/24 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
安全学习心得体会范文
2016/01/18 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL