• 图片上传即时预览效果


    做项目时一同事推荐的一个picload插件,实现图片上传后,即时预览效果,感觉很不错,分享出来。

    点击上传图片后。立即看到预览的效果如下图:

    布局代码:

    <div class="banner" id="CoupicPicYes">图片预览</div>
    <a class="input-file" href="javascript:void(0);" onclick="$('#photoUpload').click()" > + 上传图片<input type="file" name="file" id="photoUpload" /> </a>

    这里用自定义的按钮代替了默认的图片上传按钮……(为了美观,美是一种追求~~~)

    css:代码:

    .input-file{position: relative;overflow: hidden;text-align: center;  auto; color: green; background-color: #fff; }
    .input-file input[type="file"]{ position: absolute; top: 0; right: 0; height: 40px; opacity: 0;}

    我们只需要在页面上引入一下js代码即可,图片大小可以自由设置。

     script引入代码:

    <script>
        $("#photoUpload").uploadImgs({
        isMB:true,//图片大小限制是否为mb,默认是MB
        imgSize:'2048',//图片限制大小,默认2M
        file:'图片',//图片或者文件的提示信息
        imgClass:'Img',//显示图片的img
        tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
        afterUpload:null//图片上传后的回调函数,参数src,obj
     });
    </script>

    最后附上picloade.js插件代码:

      1 /**
      2 * @js调用方法:
      3 * $(object).uploadImgs({
      4 *      isMB:true,//图片大小限制是否为mb,默认是MB
      5 *    imgSize:'2048',//图片限制大小,默认2M
      6 *    file:'图片',//图片或者文件的提示信息
      7 *    imgClass:'Img',//显示图片的img
      8 *    tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
      9 *    afterUpload:null//图片上传后的回调函数,参数src,obj
     10 * });
     11 *
     12 */
     13 (function($) {
     14     var opt,ele;
     15     $.fn.uploadImgs=function(config){        
     16         config = $.extend(require.defaults, config || {});
     17         opt=config;
     18         ele=this;
     19         return (new require())._init();    
     20     };
     21     function require(options) {};
     22     require.prototype = {
     23         _init: function() {
     24             var id=$(ele).attr("id"),that=this,
     25                 x=document.getElementById(id);    
     26             $(ele).unbind("change").bind("change",function(){//上传图片
     27                 that._getImg(x,$("#"+id));                
     28             });
     29         },
     30         _getImg:function(x,obj){
     31             var pasts=opt.isMB ? opt.imgSize / 1024 +"M" : opt.imgSize+"kb",that=this;
     32             if(!x || !x.value) return; 
     33             var user= obj.attr("accept")=="" || !obj.attr("accept") ? "jpg,jpeg,gif,bmp,png" : obj.attr("accept");
     34             eval(that._accept(user));            
     35             if(patn.test(x.value)){//判断是否是图片    
     36                 if (x.files && x.files[0])
     37                     {
     38                         var size=Math.ceil(x.files[0].size / 1024);//判断图片大小
     39                        
     40                         if(size > opt.imgSize)
     41                         {
     42                            var value=opt.file+"大小不能超过"+pasts;
     43                            opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,value) : that._tips(obj,false,value);
     44                            return;     
     45                         }         
     46                         var reader = new FileReader();
     47                         reader.readAsDataURL(x.files[0]);            
     48                         reader.onload = function(evt){
     49                            $("."+opt.imgClass).attr("src",evt.target.result).attr("hasImg",true);
     50                            if(opt.afterUpload && $.isFunction(opt.afterUpload)){
     51                                opt.afterUpload.call(that,evt.target.result,obj);
     52                            }
     53                         } 
     54                     }else{//ie
     55                        var img= new Image();    
     56                        var _val=that._getPath(x);
     57                        img.src=x.value;
     58                        var size=Math.ceil(img.fileSize / 1024);                
     59                     if(size>opt.imgSize)
     60                     {                
     61                         var value=opt.file+"大小不能超过"+pasts;
     62                            opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,value) : that._tips(obj,false,value);
     63                         return; 
     64                     }
     65                     _val = _val.replace(' ','%20');
     66                     var aa=$('<div class="adddivs" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale,src='+_val+'); WIDTH: '+opt.imgWidth+'px; HEIGHT: '+opt.imgHeight+'px;max-100%;max-height:100%"></div>');
     67                     if($("."+opt.imgClass).parent().find(".adddivs").length>0){
     68                         $("."+opt.imgClass).parent().find(".adddivs").remove();
     69                     }
     70                     $("."+opt.imgClass).after(aa);
     71                     $("."+opt.imgClass).hide();
     72                     if(opt.afterUpload && $.isFunction(opt.afterUpload)){
     73                            opt.afterUpload.call(that,evt.target.result,obj);
     74                        }
     75                     }
     76                 var value="上传成功";
     77                 opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,true,value) : that._tips(obj,true,value);
     78             }else{
     79                 var s="请上传"+user+"格式的"+opt.file;
     80                 opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,s) : that._tips(obj,false,s);
     81             }
     82         },
     83         _accept:function(user){
     84             var a="var patn = /\.";
     85             for(var i=0;i<user.split(",").length;i++)
     86             {
     87                 if(i==user.split(",").length-1)
     88                 a += user.split(",")[i];
     89                 else
     90                 a += user.split(",")[i]+"|\.";
     91             }
     92             a+="$/i;";            
     93             return a;
     94         },
     95         _tips:function(obj,bool,value){
     96             var tip=obj.parent().next(".error_tips");
     97             tip.text(value);    
     98             if(bool){tip.addClass("c-blue").removeClass("c-red");}
     99             else{tip.addClass("c-red").removeClass("c-blue");}
    100         },
    101         _getPath:function(obj){ 
    102             if(obj)    
    103             {    
    104                 if (window.navigator.userAgent.indexOf("MSIE")>=1){    
    105                   obj.select(); 
    106                   return document.selection.createRange().text;    
    107                 }else if(window.navigator.userAgent.indexOf("Firefox")>=1)    
    108                 {    
    109                   if(obj.files)  return obj.files.item(0).getAsDataURL();  
    110                   return obj.value;    
    111                 }    
    112                 return obj.value;    
    113             } 
    114         }
    115     };   
    116     require.defaults = {
    117         isMB:true,//图片大小限制是否为mb,默认是MB
    118         imgSize:'2048',//图片限制大小,默认2M
    119         file:'图片',//图片或者文件的提示信息
    120         imgClass:'Img',//显示图片的img
    121         tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
    122         afterUpload:null,//图片上传后的回调函数,参数src,obj
    123         imgWidth:80,//用于IE8显示图片div的宽度
    124         imgHeight:80//用于IE8显示图片div的高度
    125     };   
    126 })(jQuery);
  • 相关阅读:
    第二个spring,第一天
    第二个spring
    项目总结以及团队贡献分
    四则运算第三次冲刺(项目完成)
    四则运算第二次冲刺更新进度(补更)
    四则运算第二次冲刺更新进度
    四则运算第一次冲刺
    阅读《构建之法》13-17章
    四则运算 用户调之修改篇
    队伍评论
  • 原文地址:https://www.cnblogs.com/hfxm/p/5545814.html
Copyright © 2020-2023  润新知