zoukankan      html  css  js  c++  java
  • jquery实现上传图片预览(需要浏览器支持html5)

    jquery实现上传图片预览(需要浏览器支持html5)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTML5 Upload</title>
    <style type="text/css">
            #destination{
                filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(true,sizingMethod=scale);
            }
    </style>
    
    <!--<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>-->
    <script type="text/javascript" src="http://localhost/jQuery/jquery.js"></script>
    <script type="text/javascript">
    //处理file input加载的图片文件
    $(document).ready(function(e) {
        //判断浏览器是否有FileReader接口
        if(typeof FileReader =='undefined')
        {
           $("#destination").css({'background':'none'}).html('亲,您的浏览器还不支持HTML5的FileReader接口,无法使用图片本地预览,请更新浏览器获得最好体验');
            //如果浏览器是ie
            if($.browser.msie===true)
            {
                //ie6直接用file input的value值本地预览
                if($.browser.version==6)
                {
                    $("#imgUpload").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" />';
                          $("#destination").empty().append(img);
                      });
                }
                //ie7,8使用滤镜本地预览
                else if($.browser.version==7 || $.browser.version==8)
                {
                    $("#imgUpload").change(function(event){
                          $(event.target).select();
                          var src = document.selection.createRange().text;
                          var dom = document.getElementById('destination');
                          //使用滤镜 成功率高
                          dom.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= src;
                          dom.innerHTML = '';
                          //使用和ie6相同的方式 设置src为绝对路径的方式 有些图片无法显示 效果没有使用滤镜好
                          /*var img = '<img src="'+src+'" width="200px" height="200px" />';
                          $("#destination").empty().append(img);*/
                     });
                }
            }
            //如果是不支持FileReader接口的低版本firefox 可以用getAsDataURL接口
            else if($.browser.mozilla===true)
            {
                $("#imgUpload").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"/>';
                          $("#destination").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类型
               $("#imgUpload").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"/>';
                                $("#destination").empty().append(img);
                            }
                           }
                   });
                   
              //处理图片拖拽的代码
              var destDom = document.getElementById('destination');
              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>
    </head>
    
    <body>
    <input type="file" id="imgUpload" name="imgUpload" draggable="true" single/>  <!--允许file控件接受的文件类型-->
    <!--<input type="file" id="imgUpload" name="imgUpload" accept="image/*" multiple/>-->
    <div id="destination" style="200px;height:200px;border:1px solid #000000;"><img src="nopic.jpg" /></div>
    </body>
    </html>

     

  • 相关阅读:
    编译预处理指令:文件包含指令、宏定义指令、条件编译指令
    多文件协作,extern、static、头文件
    函数间参数传递的3种方式
    函数的定义与调用
    编码标准:ASCII、GBK、Unicode(UTF8、UTF16、UTF32)
    插入字符
    Windows Vista for Developers——第四部分:用户帐号控制(User Account Control,UAC)
    C# 获取QQ好友列表信息的实现
    C# 获取QQ群数据的实现
    QQ登陆功能的实现2
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/5898784.html
Copyright © 2011-2022 走看看