在firefox\chrome\ie10等浏览器中可以使用HTML5中的内容实现图片即时预览效果,在IE10以下浏览器中使用滤镜来解决图片显示问题。

HTML5中的FileReader对象主要是把文件读入内存中,并且读取文件中数据,目前为止,firefox3.6+、chrome6+、safari5.2+、opera11+及IE10浏览器支持FileReader对象,它有一下5种方法:

1、readBinaryString;

2、readAsText;

3、readAsDataURL 将对象或文件中数据读取为一串DataURL字符串,就是将数据以一种特殊格式的URL地址形式直接读入页面。

4、readAsArrayBuffer;

5、abort;

现在我们要用的是第三种

var aFile=ev.dataTransfer.files;

var reader=new FileReader();

reader.onload=function(){
alert(reader.result);
}; reader.onerror=function(){
alert('读取错误');
}; reader.onloadend=function(){
alert('读取完成');
}; reader.onloadstart=function(){
alert('开始读取');
}; reader.onprogress=function(ev){
var scale=ev.loaded/ev.total; alert('正在读取');
} rearder.onabort=function(){
alert('读取中断');
}; 强制中断:
reader.abort(); 通过文本形式读取:
reader.readAsText(aFile[0],'编码格式');
编码格式: utf-8
gb2312 通过base64方式读取:
reader.readAsDataURL(aFile[0]);
案例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
img{
width:100px;
height:100px;
}
form label{
display:inline-block;
width:100px;
height:30px;
line-height:30px;
text-align:right;
}
</style>
</head>
<body>
<form id="infoForm" action="url" method="post" enctype="multipart/form-data">
<!--图片上传隐藏信息-->
<!--accept="audio/*|video/*|image/*|MIME_type 规定多接受的文件"-->
<input type="file" accept="image/*" prev-target="#goodPic" id="goodsPreview" style="display:none"/>
<input type="file" accept="image/*" prev-target="#goodsCarouselImg1" id="loop1" style="display:none"/>
<input type="file" accept="image/*" prev-target="#goodsCarouselImg2" id="loop2" style="display:none"/>
<input type="file" accept="image/*" prev-target="#goodsCarouselImg3" id="loop3" style="display:none"/>
<ul>
<li>
<label for="goodsName">商品名称</label>
<input id="goodsName" type="text" placeholder="请输入商品名称"/>
</li>
<li>
<label for="goodsNum">商品编号</label>
<input id="goodsNum" type="text" placeholder="请输入商品编号"/>
</li>
<li>
<label for="goodsPrice">商品价格</label>
<input id="goodsPrice" type="text" placeholder="请输入商品价格"/>
</li>
<li class="goodsList">
<label>商品主图</label>
<img src="img/goods1.jpg" file-target="#goodsPreview"id="goodsPic" alt="商品主图"/>
</li>
<li class="goodsList">
<label>商品轮播图</label>
<img src="img/goods1.jpg" file-target="#loop1" id="goodsCarouselImg1" alt="商品轮播图1"/>
<img src="img/goods1.jpg" file-target="#loop2" id="goodsCarouselImg2" alt="商品轮播图2"/>
<img src="img/goods1.jpg" file-target="#loop3" id="goodsCarouselImg3" alt="商品轮播图3"/>
</li>
<li><label>&nbsp;</label><input type="button" id="subBtn" class="btn" value="提交信息"/></li>
</ul>
</form>
</body>
<script src="jquery.1.11.3.js"></script>
<script>
$("#goodsPic,#goodsCarouselImg1,#goodsCarouselImg2,#goodsCarouselImg3").click(function(){
$($(this).attr('file-target')).click();
});
$('[type=file]').on('change',function(){
var preview=$($(this).attr('prev-target'));
var reader=new FileReader();
reader.onload=function(e){
var avatorFile= e.target.result;
if(!avatorFile){
alert('您的浏览器不支持预览功能');
return;
}
preview.attr('src',avatorFile);
}
reader.readAsDataURL(this.files[0]);
})
</script>
</html>

最新文章

  1. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
  2. web前端工程师在移动互联网时代里的地位问题
  3. U-BOOT-Linux启动指令bootm分析
  4. zend studio 13 curl 请求本机地址 无法跟踪调试的问题解决方案。。。(chrome等浏览器调试原理相同)
  5. js 调用IE内置打印控件
  6. C#中的AssemblyInfo 程序集信息
  7. 动态获取爱奇艺上传视频mp4格式url地址
  8. OA学习笔记-007-Dao层设计
  9. 【深圳,武汉】一加科技(One Plus)招聘,寻找不...
  10. ubuntu下一个jboss-seam-2.2.2.Final/examples/build.xml:754: warning: &amp;#39;includeantruntime&amp;#39; was not set
  11. 全排列dfs算法
  12. C# 委托链(多播委托)
  13. js原型杂谈
  14. HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接(转)
  15. hdu 1394 逆序对(nlgn+o(n) )
  16. puppeteer:官方出品的chrome浏览器自动化测试工具
  17. 【剑指offer】反转链表
  18. ASP.NET Log4net 记录日志
  19. css3整理--calc()
  20. sourcetree回退已推送的代码

热门文章

  1. Web应用程序使用Hibernate
  2. .net 连接Redis
  3. Android-风格和主题
  4. MathType编辑表示右上角的符号的方法
  5. ios - UILabel_长按复制
  6. 绝对定位position: absolute;
  7. A guide to analyzing Python performance
  8. (翻译) TFS源码控制的未来 (TFSVC vs. Git)
  9. linux用户与组管理
  10. Unity3d 游戏退出界面1