Html5 FileReader实现即时上传图片功能实例代码


Posted in HTML / CSS onSeptember 01, 2014

下面的是在ie9下面实现的预览,跟ie8还是不一样的,不过我记得貌似ie8好像也是利用了fiter的功能,因为项目只要求在ie9以上,所以就没有写出ie8的啦

复制代码
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p><style type="text/css">
#kk{
width:400px;
height:400px;
overflow: hidden;
}
#preview_wrapper{
width:300px;
height:300px;
background-color:#CCC;
overflow: hidden;
}
#preview_fake{ /* 该对象用于在IE下显示预览图片 */
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
width:300px;
overflow: hidden;
}
#preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
width:300px;
visibility:hidden;
overflow: hidden;
}
#preview{ /* 该对象用于在FF下显示预览图片 */
width:300px;
height:300px;
overflow: hidden;
}
</style><script type="text/javascript">
function onUploadImgChange(sender){
if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){
alert('图片格式无效!');
return false;
}
var objPreview = document.getElementById('preview');
var objPreviewFake = document.getElementById('preview_fake');
var objPreviewSizeFake = document.getElementById('preview_size_fake');
if( sender.files && sender.files[0] ){ //这里面就是chrome和ff可以兼容的了
objPreview.style.display = 'block';
objPreview.style.width = 'auto';
objPreview.style.height = 'auto';
// Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
objPreview.src = sender.files[0].getAsDataURL();
}else if( objPreviewFake.filters ){
// IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果
//(相同环境有时能显示,有时不显示),因此只能用滤镜来解决
// IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
sender.select();
sender.blur();
var imgSrc = document.selection.createRange().text;
objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
alert("已成功选择图片!");
alert(objPreviewSizeFake.offsetWidth);
autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );
objPreview.style.display = 'none';
}
}
function onPreviewLoad(sender){
autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );
}
function autoSizePreview( objPre, originalWidth, originalHeight ){
var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );
objPre.style.width = zoomParam.width + 'px';
objPre.style.height = zoomParam.height + 'px';
objPre.style.marginTop = zoomParam.top + 'px';
objPre.style.marginLeft = zoomParam.left + 'px';
}
function clacImgZoomParam( maxWidth, maxHeight, width, height ){
var param = { width:width, height:height, top:0, left:0 };
if( width>maxWidth || height>maxHeight ){
rateWidth = width / maxWidth;
rateHeight = height / maxHeight;
if( rateWidth > rateHeight ){
param.width = maxWidth;
param.height = height / rateWidth;
}else{
param.width = width / rateHeight;
param.height = maxHeight;
}
}
param.left = (maxWidth - param.width) / 2;
param.top = (maxHeight - param.height) / 2;
return param;
}
</script> <input name="localfile" type="file" id="localfile" size="28" onchange="onUploadImgChange(this)"/> <!--以下是预览图片用的-->
<div id="kk">
<div id="preview_wrapper">
<div id="preview_fake">
<img id="preview" src="" onload="onPreviewLoad(this)"/>
</div>
</div>
<br/>
<img id="preview_size_fake" />
</div></p>
</body>
</html>
HTML / CSS 相关文章推荐
CSS3中的元素过渡属性transition示例详解
Nov 30 HTML / CSS
一款简洁的纯css3代码实现的动画导航
Oct 31 HTML / CSS
纯CSS3实现的阴影效果
Dec 24 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
Apr 25 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
Aug 31 HTML / CSS
CSS3绘制不规则图形的一些方法示例
Nov 07 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
May 03 HTML / CSS
HTML5 Canvas绘制五星红旗
May 04 HTML / CSS
在html页面中取得session中的值的方法
Aug 11 HTML / CSS
canvas小画板之平滑曲线的实现
Aug 12 HTML / CSS
web前端之css水平居中代码解析
May 20 HTML / CSS
纯html+css实现奥运五环的示例代码
Aug 02 HTML / CSS
html5定位获取当前位置并在百度地图上显示
Aug 22 #HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
Aug 22 #HTML / CSS
html5 更新图片颜色示例代码
Jul 29 #HTML / CSS
Html5 语法与规则简要概述
Jul 29 #HTML / CSS
html5桌面通知(Web Notifications)实例解析
Jul 07 #HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 #HTML / CSS
HTML5新增的表单元素和属性实例解析
Jul 07 #HTML / CSS
You might like
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python发腾讯微博代码分享
2014/01/10 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
建筑专业毕业生推荐信
2013/11/21 职场文书
员工入职担保书范文
2014/04/01 职场文书
师德师风演讲稿
2014/05/05 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2015党建工作简报
2015/07/21 职场文书