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 相关文章推荐
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
Element InputNumber 计数器的实现示例
Aug 03 Javascript
在Vue中使用HOC模式的实现
Aug 23 Javascript
微信小程序实现身份证取景框拍摄
Sep 09 Javascript
ant-design表单处理和常用方法及自定义验证操作
Oct 27 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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汉字转换拼音的类
2013/06/18 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python清空命令行方式
2020/01/13 Python
python动态文本进度条的实例代码
2020/01/22 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
编辑求职信样本
2013/12/16 职场文书
贷款委托书范本
2014/04/08 职场文书
技校毕业生自荐书
2014/05/23 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Python函数中apply、map、applymap的区别
2021/11/27 Python
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers