jQuery实现图片上传预览效果功能完整实例【测试可用】


Posted in jQuery onMay 28, 2018

本文实例讲述了jQuery实现图片上传预览效果功能。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>3water.com jquery图片上传预览效果</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  </head>
  <body>
 <input type="file" id="browsefile" >
<div class="images_show" id="images_show">
<p class="first">上传图片预览区</p>
<p>图片仅限JPG、PNG格式</p>
<p>文件尺寸:532×400px</p>
<p>文件大小:200K以内</p>
</div>
</div>
<script type="text/javascript">
//处理file input加载的图片文件
$(document).ready(function(e) {
   //判断浏览器是否有FileReader接口
  if(typeof FileReader =='undefined')
   {
    /*$("#images_show").css({'background':'none'}).html('亲,您的浏览器还不支持HTML5的FileReader接口,无法使用图片本地预览,请更新浏览器获得最好体验');*/
     //如果浏览器是ie
     if($.browser.msie===true)
     {
       //ie6直接用file input的value值本地预览
      if($.browser.version==6)
       {
         $("#browsefile").change(function(event){
            //ie6下怎么做图片格式判断?
            var src = event.target.value;
            //var src = document.selection.createRange().text;    //选中后 selection对象就产生了 这个对象只适合ie
            var img = '<img src="'+src+'" width="200px" height="200px" />';
            $("#images_show").empty().append(img);
          });
      }
       //ie7,8使用滤镜本地预览
       else if($.browser.version==7 || $.browser.version==8)
       {
         $("#browsefile").change(function(event){
           $(event.target).select();
            var src = document.selection.createRange().text;
            var dom = document.getElementById('images_show');
            console.log(src);
            //使用滤镜 成功率高
            $("#images_show").css({"filter":"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"});
            /*dom.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= src;*/
            dom.innerHTML = '<img id="head" alt=" " src=+src+ />';
            //使用和ie6相同的方式 设置src为绝对路径的方式 有些图片无法显示 效果没有使用滤镜好
            /*var img = '<img src="'+src+'" width="200px" height="200px" />';
            $("#images_show").empty().append(img);*/
          });
       }
     }
     //如果是不支持FileReader接口的低版本firefox 可以用getAsDataURL接口
     else if($.browser.mozilla===true)
     {
       $("#browsefile").change(function(event){
         //firefox2.0没有event.target.files这个属性 就像ie6那样使用value值 但是firefox2.0不支持绝对路径嵌入图片 放弃firefox2.0
         //firefox3.0开始具备event.target.files这个属性 并且开始支持getAsDataURL()这个接口 一直到firefox7.0结束 不过以后都可以用HTML5的FileReader接口了
         if(event.target.files)
         {
          //console.log(event.target.files);
          for(var i=0;i<event.target.files.length;i++)
          {
             var img = '<img src="'+event.target.files.item(i).getAsDataURL()+'" width="200px" height="200px"/>';
            $("#images_show").empty().append(img);
          }
         }
         else
         {
           //console.log(event.target.value);
           //$("#imgPreview").attr({'src':event.target.value});
         }
         });
     }
   }
   else
   {
     // version 1
     /*$("#imgUpload").change(function(e){
      var file = e.target.files[0];
      var fReader = new FileReader();
      //console.log(fReader);
      //console.log(file);
      fReader.onload=(function(var_file)
      {
        return function(e)
        {
          $("#imgPreview").attr({'src':e.target.result,'alt':var_file.name});
        }
      })(file);
      fReader.readAsDataURL(file);
      });*/
      //单图上传 version 2
      /*$("#imgUpload").change(function(e){
         var file = e.target.files[0];
         var reader = new FileReader();
         reader.onload = function(e){
           //displayImage($('bd'),e.target.result);
           //alert('load');
           $("#imgPreview").attr({'src':e.target.result});
         }
         reader.readAsDataURL(file);
        });*/
      //多图上传 input file控件里指定multiple属性 e.target是dom类型
      $("#browsefile").change(function(e){
          for(var i=0;i<e.target.files.length;i++)
            {
              var file = e.target.files.item(i);
             //允许文件MIME类型 也可以在input标签中指定accept属性
             //console.log(/^image\/.*$/i.test(file.type));
             if(!(/^image\/.*$/i.test(file.type)))
             {
               continue;      //不是图片 就跳出这一次循环
             }
             //实例化FileReader API
             var freader = new FileReader();
             freader.readAsDataURL(file);
             freader.onload=function(e)
             {
               var img = '<img src="'+e.target.result+'" width="200px" height="200px"/>';
               $("#images_show").empty().append(img);
             }
            }
        });
      //处理图片拖拽的代码
      var destDom = document.getElementById('images_show');
      destDom.addEventListener('dragover',function(event){
        event.stopPropagation();
        event.preventDefault();
        },false);
      destDom.addEventListener('drop',function(event){
        event.stopPropagation();
        event.preventDefault();
       var img_file = event.dataTransfer.files.item(0);        //获取拖拽过来的文件信息 暂时取一个
        //console.log(event.dataTransfer.files.item(0).type);
        if(!(/^image\/.*$/.test(img_file.type)))
        {
          alert('您还未拖拽任何图片过来,或者您拖拽的不是图片文件');
          return false;
        }
       fReader = new FileReader();
        fReader.readAsDataURL(img_file);
        fReader.onload = function(event){
          destDom.innerHTML='';
          destDom.innerHTML = '<img src="'+event.target.result+'" width="200px" height="200px"/>';
          };
      },false);
   }
 });
</script>
</body>
</html>

使用HTML/CSS/JavaScript在线运行测试工具http://tools.3water.com/code/HtmlJsRun运行代码,测试效果如下:

jQuery实现图片上传预览效果功能完整实例【测试可用】

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
js和jquery中获取非行间样式
May 05 jQuery
jquery实现图片放大点击切换
Jun 06 jQuery
jQuery正则验证注册页面经典实例
Jun 10 jQuery
jQuery中extend函数简单用法示例
Oct 11 jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
jquery实现企业定位式导航效果
Jan 01 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
jQuery实现获取及设置CSS样式操作详解
Sep 05 jQuery
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
jQuery实现tab栏切换效果
Dec 22 jQuery
关于jquery中attr()和prop()方法的区别
May 28 #jQuery
jQuery中将json数据显示到页面表格的方法
May 27 #jQuery
jQuery插件jsonview展示json数据
May 26 #jQuery
jQuery插件Validation表单验证详解
May 26 #jQuery
jQuery创建及操作xml格式数据示例
May 26 #jQuery
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 #jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 #jQuery
You might like
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
curl和libcurl的区别简介
2015/07/01 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
实习心得体会
2014/01/02 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
高一军训的心得体会
2014/09/01 职场文书
庆祝儿童节标语
2014/10/09 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书