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 相关文章推荐
ext前台接收action传过来的json数据示例
Jun 17 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
前端jquery部分很精彩
May 03 Javascript
谈谈JavaScript数组常用方法总结
Jan 24 Javascript
实例解析js中try、catch、finally的执行规则
Feb 24 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
关于vue的npm run dev和npm run build的区别介绍
Jan 14 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 Javascript
Ant Design Pro 之 ProTable使用操作
Oct 31 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基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
matplotlib中legend位置调整解析
2017/12/19 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
仓库理货员岗位职责
2013/12/18 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
企业战略合作意向书
2015/05/08 职场文书
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS