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 相关文章推荐
图片上传即时显示缩略图的js代码
May 27 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
JS原型和原型链原理与用法实例详解
Feb 05 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
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/08 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
python实现三维拟合的方法
2018/12/29 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
农民工工资支付承诺函
2014/03/31 职场文书
支部组织生活会方案
2014/06/10 职场文书
小学生交通安全寄语
2015/02/27 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书