在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. python XML基础

    什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...

  2. ubuntu中怎样添加或删除一个PPA源

    添加PPA源的命令为:sudo add-apt-repository ppa:user/ppa-name 添加好更新一下: sudo apt-get update删除命令格式则为:sudo add-a ...

  3. jQuery.getJSON()方法小记

    今天看了下jQquery中的getJSON()方法,做点小结: 原型: jQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR ...

  4. [Unity热更新]tolua# & LuaFramework(一):基础

    一.tolua# c#调用lua:LuaState[变量名/函数名] 1.LuaState a.执行lua代码段 DoString(string) DoFile(.lua文件名) Require(.l ...

  5. std::condition_variable(3)复习

    #include <iostream> // std::cout #include <thread> // std::thread #include <mutex> ...

  6. Xtrabackup 使用方法

    简介:Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.本文测试使用的是1.3版本,X ...

  7. 【Python之路】第十三篇--DOM

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  8. UTF-8, UTF-16, UTF-32 & BOM

    FAQ - UTF-8, UTF-16, UTF-32 & BOM http://www.unicode.org/faq/utf_bom.html General questions, rel ...

  9. Markov chain

    w https://en.wikipedia.org/wiki/Markov_chain https://zh.wikipedia.org/wiki/马尔科夫链 In probability theo ...

  10. Nginx敏感信息泄露漏洞(CVE-2017-7529)

    2017年7月11日,为了修复整数溢出漏洞(CVE-2017-7529), Nginx官方发布了nginx-1.12.1 stable和nginx-1.13.3 mainline版本,并且提供了官方p ...