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的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
jQuery zTree树插件的使用教程
Aug 16 jQuery
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 01 jQuery
jquery实现上传图片功能
Jun 29 jQuery
jquery轮播图插件使用方法详解
Jul 31 jQuery
jQuery实现鼠标拖拽登录框移动效果
Sep 13 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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
php递归函数怎么用才有效
2018/02/24 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
解放web程序员的输入验证
2006/10/06 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
简单使用Python自动生成文章
2014/12/25 Python
Python创建xml文件示例
2017/03/22 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
建筑自我鉴定
2013/10/19 职场文书
影视艺术学院毕业生自荐信
2013/11/13 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
django上传文件的三种方式
2021/04/29 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript