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 相关文章推荐
javascript Array.prototype.slice使用说明
Oct 11 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
Mar 04 Javascript
JavaScript 判断浏览器是否支持SVG的代码
Mar 21 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
javascript搜索框效果实现方法
May 14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
Apr 13 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
微信小程序 this.triggerEvent()的具体使用
Dec 10 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 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
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
13个PHP函数超实用
2015/10/21 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
新手如何快速理解js异步编程
2019/06/24 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
入党积极分子自我鉴定范文
2014/03/25 职场文书
工作保证书范文
2014/04/29 职场文书
申论倡议书范文
2014/05/13 职场文书
敬老月活动总结
2014/08/28 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
Python采集壁纸并实现炫轮播
2022/04/30 Python