在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>

JS兼容各个浏览器的本地图片上传即时预览效果\、的更多相关文章

  1. JS兼容各个浏览器的本地图片上传即时预览效果

    JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...

  2. ThinkPHP5与JQuery实现图片上传和预览效果

    内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图: html和js代码如下: <!DO ...

  3. uploadPreview 兼容多浏览器图片上传及预览插件使用

    uploadPreview兼容多浏览器图片上传及预览插件 http://www.jq22.com/jquery-info2757 Html 代码 <div class="form-gr ...

  4. js实现图片上传及预览---------------------->>兼容ie6-8 火狐以及谷歌

    <head runat="server"> <title>图片上传及预览(兼容ie6/7/8 firefox/chrome)</title> & ...

  5. html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  6. file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  7. input file实现多选,限制文件上传类型,图片上传前预览功能

    限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...

  8. 【转】html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  9. jQuery:[1]实现图片上传并预览

    jQuery:[1]实现图片上传并预览 原理 预览思路 1.当上传对象的input被触发并选择本地图片之后获取要上传的图片对象的URL: 2.把对象URL赋值给实现写好的img标签的src属性 Fil ...

随机推荐

  1. 第一百八十五节,jQuery,Ajax 表单插件

    jQuery,Ajax 表单插件 学习要点: 1.核心方法 2.option 参数 3.工具方法 传统的表单提交,需要多次跳转页面,极大的消耗资源也缺乏良好的用户体验.而这款 form.js 表单的 ...

  2. easyui datagrid onLoadSuccess加载两次。。

    今天使用EasyUI的datagrid时发现首次打开页面时onLoadSuccess方法执行了两次.后来发现主要问题是datagrid被初始化了两次.主要原因是一开始html中声明了dg为easyui ...

  3. java字符编码详解

    引用自:http://blog.csdn.net/jerry_bj/article/details/5714745 GBK.GB2312.iso-8859-1之间的区别 GB2312,由中华人民共和国 ...

  4. jQuery EasyUI编辑DataGrid用combobox实现多级联动

    我在项目中设计课程表的时候需要用到老师和分类之间的多级联动. 首先是一张效果图: 下面是实现的代码: <body> <script type="text/javascrip ...

  5. day16 递归函数:一般的递归方法

    一.递归,在一个函数里面 调用 自己: pycharm的最大递归次数是997 查看与修改方法: # # print(sys.getrecursionlimit()) # sys.setrecursio ...

  6. ABAP小白的成长日记--------helloblog

    在外企公司培训了3个月,系统的学习了ABAP,希望开通Blog以后和大家一起深入学习交流.印度人的办事效率是出奇的低,赶超国企公务员.虽然内容cover到了几乎所有R/4的内容,但是还有很多知识没有真 ...

  7. zxing 二维码扫描 配置和使用

    本文转载至 http://blog.csdn.net/a6472953/article/details/8796501   二维码扫描使用最多的主要有两个库:zbarSDK 和zxing 关于zbar ...

  8. 部署网站时的错误“one of its dependencies.试图加载格式不正确的程序。”解决方案。

    Sever Error in '/' Application.Could not load file or assembly 'SresBase' or one of its dependencies ...

  9. HTML页面布局

    接下来的下面代码,只是给了一个大的前端编写布局,如果你已经是牛人了,就当没看到,如果是一些初学者,不妨拿去用用,里面也写了一些常用的css样式,现在虽然有很多牛逼的前段框架,用起来也非常得心应手,但是 ...

  10. MySQL中自增长与锁

    在InnoDB存储引擎中,对于每个含有自增长值的表都有一个自增长计数器(auto-increment counter)当对含有自增长的计数器的表进行插入操作时,这个计数器会被初始化,执行如下的语句可以 ...