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 相关文章推荐
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
Javascript基础知识(二)事件
Sep 29 Javascript
Javascript中typeof 用法小结
May 12 Javascript
浅谈Angular路由复用策略
Oct 04 Javascript
vue 通过下拉框组件学习vue中的父子通讯
Dec 19 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
vue实现简易音乐播放器
Aug 14 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
基于mysql的论坛(2)
2006/10/09 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
Javascript简单实现可拖动的div
2013/10/22 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
python生成日历实例解析
2014/08/21 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
Python用户自定义异常的实现
2020/12/25 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
优秀员工自荐书
2015/03/06 职场文书
安全教育观后感
2015/06/17 职场文书